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:
68
app.py
68
app.py
@@ -1398,30 +1398,58 @@ def settings_communities():
|
|||||||
|
|
||||||
# Get available communities from platform config and collection targets
|
# Get available communities from platform config and collection targets
|
||||||
available_communities = []
|
available_communities = []
|
||||||
|
|
||||||
# Load platform configuration
|
# Load platform configuration with error handling
|
||||||
platform_config = load_platform_config()
|
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)
|
# Get enabled communities from collection_targets (what's actually being crawled)
|
||||||
enabled_communities = set()
|
enabled_communities = set()
|
||||||
for target in platform_config.get('collection_targets', []):
|
try:
|
||||||
enabled_communities.add((target['platform'], target['community']))
|
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
|
# Build community list from platform config for communities that are enabled
|
||||||
for platform_name, platform_info in platform_config.get('platforms', {}).items():
|
try:
|
||||||
for community_info in platform_info.get('communities', []):
|
for platform_name, platform_info in platform_config.get('platforms', {}).items():
|
||||||
# Only include communities that are in collection_targets
|
if not isinstance(platform_info, dict):
|
||||||
if (platform_name, community_info['id']) in enabled_communities:
|
continue
|
||||||
available_communities.append({
|
communities = platform_info.get('communities', [])
|
||||||
'id': community_info['id'],
|
if not isinstance(communities, list):
|
||||||
'name': community_info['name'],
|
continue
|
||||||
'display_name': community_info.get('display_name', community_info['name']),
|
|
||||||
'platform': platform_name,
|
for community_info in communities:
|
||||||
'icon': community_info.get('icon', platform_info.get('icon', '📄')),
|
try:
|
||||||
'description': community_info.get('description', '')
|
if not isinstance(community_info, dict):
|
||||||
})
|
continue
|
||||||
|
|
||||||
return render_template('settings_communities.html',
|
# Only include communities that are in collection_targets
|
||||||
|
if (platform_name, community_info['id']) in enabled_communities:
|
||||||
|
available_communities.append({
|
||||||
|
'id': community_info['id'],
|
||||||
|
'name': community_info['name'],
|
||||||
|
'display_name': community_info.get('display_name', community_info['name']),
|
||||||
|
'platform': platform_name,
|
||||||
|
'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,
|
user=current_user,
|
||||||
available_communities=available_communities,
|
available_communities=available_communities,
|
||||||
selected_communities=selected_communities)
|
selected_communities=selected_communities)
|
||||||
|
|||||||
Reference in New Issue
Block a user