Phase 0: Fix ModuleEnableSettings list() - use get() instead of get_or_create
- Changed to use get() with DoesNotExist exception handling - Creates settings only if they don't exist - Better error handling with traceback - Fixes 404 'Setting not found' errors
This commit is contained in:
@@ -327,8 +327,8 @@ class ModuleEnableSettingsViewSet(AccountModelViewSet):
|
|||||||
account = getattr(request, 'account', None)
|
account = getattr(request, 'account', None)
|
||||||
if not account:
|
if not account:
|
||||||
user = getattr(request, 'user', None)
|
user = getattr(request, 'user', None)
|
||||||
if user:
|
if user and hasattr(user, 'account'):
|
||||||
account = getattr(user, 'account', None)
|
account = user.account
|
||||||
|
|
||||||
if not account:
|
if not account:
|
||||||
return error_response(
|
return error_response(
|
||||||
@@ -337,11 +337,18 @@ class ModuleEnableSettingsViewSet(AccountModelViewSet):
|
|||||||
request=request
|
request=request
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get or create settings for account
|
# Get or create settings for account (one per account)
|
||||||
settings, created = ModuleEnableSettings.objects.get_or_create(account=account)
|
try:
|
||||||
|
settings = ModuleEnableSettings.objects.get(account=account)
|
||||||
|
except ModuleEnableSettings.DoesNotExist:
|
||||||
|
# Create default settings for account
|
||||||
|
settings = ModuleEnableSettings.objects.create(account=account)
|
||||||
|
|
||||||
serializer = self.get_serializer(settings)
|
serializer = self.get_serializer(settings)
|
||||||
return success_response(data=serializer.data, request=request)
|
return success_response(data=serializer.data, request=request)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
import traceback
|
||||||
|
error_trace = traceback.format_exc()
|
||||||
return error_response(
|
return error_response(
|
||||||
error=f'Failed to load module enable settings: {str(e)}',
|
error=f'Failed to load module enable settings: {str(e)}',
|
||||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||||
|
|||||||
Reference in New Issue
Block a user