Fix community settings page 500 error
- Added comprehensive error handling for platform config loading - Added validation for collection_targets structure - Added defensive programming for community data processing - Added logging for debugging community list building - Prevents crashes when config files are missing or malformed 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
32
app.py
32
app.py
@@ -1399,17 +1399,38 @@ def settings_communities():
|
||||
# Get available communities from platform config and collection targets
|
||||
available_communities = []
|
||||
|
||||
# Load platform configuration
|
||||
# Load platform configuration with error handling
|
||||
try:
|
||||
platform_config = load_platform_config()
|
||||
if not platform_config:
|
||||
platform_config = {"platforms": {}, "collection_targets": []}
|
||||
except Exception as e:
|
||||
logger.error(f"Error loading platform config: {e}")
|
||||
platform_config = {"platforms": {}, "collection_targets": []}
|
||||
|
||||
# Get enabled communities from collection_targets (what's actually being crawled)
|
||||
enabled_communities = set()
|
||||
try:
|
||||
for target in platform_config.get('collection_targets', []):
|
||||
if 'platform' in target and 'community' in target:
|
||||
enabled_communities.add((target['platform'], target['community']))
|
||||
except Exception as e:
|
||||
logger.error(f"Error processing collection_targets: {e}")
|
||||
|
||||
# Build community list from platform config for communities that are enabled
|
||||
try:
|
||||
for platform_name, platform_info in platform_config.get('platforms', {}).items():
|
||||
for community_info in platform_info.get('communities', []):
|
||||
if not isinstance(platform_info, dict):
|
||||
continue
|
||||
communities = platform_info.get('communities', [])
|
||||
if not isinstance(communities, list):
|
||||
continue
|
||||
|
||||
for community_info in communities:
|
||||
try:
|
||||
if not isinstance(community_info, dict):
|
||||
continue
|
||||
|
||||
# Only include communities that are in collection_targets
|
||||
if (platform_name, community_info['id']) in enabled_communities:
|
||||
available_communities.append({
|
||||
@@ -1420,6 +1441,13 @@ def settings_communities():
|
||||
'icon': community_info.get('icon', platform_info.get('icon', '📄')),
|
||||
'description': community_info.get('description', '')
|
||||
})
|
||||
except Exception as e:
|
||||
logger.error(f"Error processing community {community_info}: {e}")
|
||||
continue
|
||||
except Exception as e:
|
||||
logger.error(f"Error building community list: {e}")
|
||||
|
||||
logger.info(f"Found {len(available_communities)} available communities")
|
||||
|
||||
return render_template('settings_communities.html',
|
||||
user=current_user,
|
||||
|
||||
Reference in New Issue
Block a user