Phase 0: Fix ModuleEnableSettings 404 error - improve error handling
- Added proper exception handling in list() and retrieve() methods - Use objects.get_or_create() directly instead of class method - Added *args, **kwargs to method signatures for DRF compatibility - Better error messages for debugging - Fixes 404 'Setting not found' errors
This commit is contained in:
@@ -312,45 +312,59 @@ class ModuleEnableSettingsViewSet(AccountModelViewSet):
|
|||||||
queryset = super().get_queryset()
|
queryset = super().get_queryset()
|
||||||
return queryset
|
return queryset
|
||||||
|
|
||||||
def list(self, request):
|
def list(self, request, *args, **kwargs):
|
||||||
"""Get or create module enable settings for current account"""
|
"""Get or create module enable settings for current account"""
|
||||||
account = getattr(request, 'account', None)
|
try:
|
||||||
if not account:
|
account = getattr(request, 'account', None)
|
||||||
user = getattr(request, 'user', None)
|
if not account:
|
||||||
if user:
|
user = getattr(request, 'user', None)
|
||||||
account = getattr(user, 'account', None)
|
if user:
|
||||||
|
account = getattr(user, 'account', None)
|
||||||
if not account:
|
|
||||||
|
if not account:
|
||||||
|
return error_response(
|
||||||
|
error='Account not found',
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
request=request
|
||||||
|
)
|
||||||
|
|
||||||
|
# Get or create settings for account
|
||||||
|
settings, created = ModuleEnableSettings.objects.get_or_create(account=account)
|
||||||
|
serializer = self.get_serializer(settings)
|
||||||
|
return success_response(data=serializer.data, request=request)
|
||||||
|
except Exception as e:
|
||||||
return error_response(
|
return error_response(
|
||||||
error='Account not found',
|
error=f'Failed to load module enable settings: {str(e)}',
|
||||||
status_code=status.HTTP_400_BAD_REQUEST,
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||||
request=request
|
request=request
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get or create settings for account
|
|
||||||
settings = ModuleEnableSettings.get_or_create_for_account(account)
|
|
||||||
serializer = self.get_serializer(settings)
|
|
||||||
return success_response(data=serializer.data, request=request)
|
|
||||||
|
|
||||||
def retrieve(self, request, pk=None):
|
def retrieve(self, request, pk=None, *args, **kwargs):
|
||||||
"""Get module enable settings for current account"""
|
"""Get module enable settings for current account"""
|
||||||
account = getattr(request, 'account', None)
|
try:
|
||||||
if not account:
|
account = getattr(request, 'account', None)
|
||||||
user = getattr(request, 'user', None)
|
if not account:
|
||||||
if user:
|
user = getattr(request, 'user', None)
|
||||||
account = getattr(user, 'account', None)
|
if user:
|
||||||
|
account = getattr(user, 'account', None)
|
||||||
if not account:
|
|
||||||
|
if not account:
|
||||||
|
return error_response(
|
||||||
|
error='Account not found',
|
||||||
|
status_code=status.HTTP_400_BAD_REQUEST,
|
||||||
|
request=request
|
||||||
|
)
|
||||||
|
|
||||||
|
# Get or create settings for account
|
||||||
|
settings, created = ModuleEnableSettings.objects.get_or_create(account=account)
|
||||||
|
serializer = self.get_serializer(settings)
|
||||||
|
return success_response(data=serializer.data, request=request)
|
||||||
|
except Exception as e:
|
||||||
return error_response(
|
return error_response(
|
||||||
error='Account not found',
|
error=f'Failed to load module enable settings: {str(e)}',
|
||||||
status_code=status.HTTP_400_BAD_REQUEST,
|
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||||
request=request
|
request=request
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get or create settings for account
|
|
||||||
settings = ModuleEnableSettings.get_or_create_for_account(account)
|
|
||||||
serializer = self.get_serializer(settings)
|
|
||||||
return success_response(data=serializer.data, request=request)
|
|
||||||
|
|
||||||
def update(self, request, pk=None):
|
def update(self, request, pk=None):
|
||||||
"""Update module enable settings for current account"""
|
"""Update module enable settings for current account"""
|
||||||
|
|||||||
Reference in New Issue
Block a user