mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2026-02-04 22:55:18 -05:00
refactor: Standardize error logging by using logger.error in state machine callbacks and capture_and_log in management commands.
This commit is contained in:
@@ -16,6 +16,7 @@ from django.utils import timezone
|
||||
|
||||
from apps.parks.models import Park
|
||||
from apps.rides.models import Ride
|
||||
from apps.core.utils import capture_and_log
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -90,7 +91,7 @@ class Command(BaseCommand):
|
||||
self.stdout.write(f" {item['name']} ({item['park']}) - opened: {item['date_opened']}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error calculating new content: {e}", exc_info=True)
|
||||
capture_and_log(e, 'Calculate new content', source='management', severity='high')
|
||||
raise CommandError(f"Failed to calculate new content: {e}") from None
|
||||
|
||||
def _get_new_parks(self, cutoff_date: datetime, limit: int) -> list[dict[str, Any]]:
|
||||
|
||||
@@ -16,6 +16,7 @@ from django.utils import timezone
|
||||
from apps.core.analytics import PageView
|
||||
from apps.parks.models import Park
|
||||
from apps.rides.models import Ride
|
||||
from apps.core.utils import capture_and_log
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -99,7 +100,7 @@ class Command(BaseCommand):
|
||||
self.stdout.write(f" {item['name']} (score: {item.get('views_change', 'N/A')})")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error calculating trending content: {e}", exc_info=True)
|
||||
capture_and_log(e, 'Calculate trending content', source='management', severity='high')
|
||||
raise CommandError(f"Failed to calculate trending content: {e}") from None
|
||||
|
||||
def _calculate_trending_parks(
|
||||
@@ -199,7 +200,7 @@ class Command(BaseCommand):
|
||||
return final_score
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error calculating score for {content_type} {content_obj.id}: {e}")
|
||||
capture_and_log(e, f'Calculate score for {content_type} {content_obj.id}', source='management', severity='medium')
|
||||
return 0.0
|
||||
|
||||
def _calculate_view_growth_score(
|
||||
|
||||
@@ -75,8 +75,6 @@ from typing import Any, Optional
|
||||
|
||||
from django.db import models
|
||||
|
||||
from apps.core.utils import capture_and_log
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -499,11 +497,9 @@ class TransitionCallbackRegistry:
|
||||
overall_success = False
|
||||
|
||||
if not callback.continue_on_error:
|
||||
capture_and_log(
|
||||
RuntimeError(f'Callback {callback.name} returned False'),
|
||||
f'Aborting callback chain - continue_on_error=False',
|
||||
source='state_machine',
|
||||
severity='medium',
|
||||
logger.error(
|
||||
f"Aborting callback chain - {callback.name} failed "
|
||||
f"and continue_on_error=False"
|
||||
)
|
||||
break
|
||||
|
||||
@@ -513,11 +509,9 @@ class TransitionCallbackRegistry:
|
||||
overall_success = False
|
||||
|
||||
if not callback.continue_on_error:
|
||||
capture_and_log(
|
||||
e,
|
||||
f'Aborting callback chain - {callback.name} raised exception',
|
||||
source='state_machine',
|
||||
severity='high',
|
||||
logger.error(
|
||||
f"Aborting callback chain - {callback.name} raised exception "
|
||||
f"and continue_on_error=False"
|
||||
)
|
||||
break
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ from .signals import (
|
||||
pre_state_transition,
|
||||
state_transition_failed,
|
||||
)
|
||||
from apps.core.utils import capture_and_log
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -85,12 +84,8 @@ def with_callbacks(
|
||||
if not pre_success and pre_failures:
|
||||
for callback, exc in pre_failures:
|
||||
if not callback.continue_on_error:
|
||||
capture_and_log(
|
||||
exc or RuntimeError(f'Pre-transition callback {callback.name} failed'),
|
||||
f'Aborting transition - pre-callback failed',
|
||||
source='state_machine',
|
||||
severity='high',
|
||||
)
|
||||
logger.error(f"Pre-transition callback {callback.name} failed, "
|
||||
f"aborting transition")
|
||||
if exc:
|
||||
raise exc
|
||||
raise RuntimeError(f"Pre-transition callback {callback.name} failed")
|
||||
|
||||
@@ -12,6 +12,7 @@ from apps.rides.models import (
|
||||
RollerCoasterStats,
|
||||
)
|
||||
from apps.rides.models.company import Company as RideCompany
|
||||
from apps.core.utils import capture_and_log
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
@@ -111,9 +112,11 @@ class Command(BaseCommand):
|
||||
self.stdout.write(self.style.SUCCESS("Successfully cleaned up existing sample data!"))
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(
|
||||
f"Error during data cleanup: {str(e)}",
|
||||
exc_info=True,
|
||||
capture_and_log(
|
||||
e,
|
||||
'Data cleanup error',
|
||||
source='management',
|
||||
severity='high',
|
||||
)
|
||||
self.stdout.write(self.style.ERROR(f"Failed to clean up existing data: {str(e)}"))
|
||||
raise
|
||||
@@ -152,7 +155,7 @@ class Command(BaseCommand):
|
||||
self.stdout.write(self.style.SUCCESS("Successfully created comprehensive sample data!"))
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error during sample data creation: {str(e)}", exc_info=True)
|
||||
capture_and_log(e, 'Sample data creation error', source='management', severity='high')
|
||||
self.stdout.write(self.style.ERROR(f"Failed to create sample data: {str(e)}"))
|
||||
raise
|
||||
|
||||
@@ -333,7 +336,7 @@ class Command(BaseCommand):
|
||||
}"
|
||||
)
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error creating park company {data['name']}: {str(e)}")
|
||||
capture_and_log(e, f"Create park company {data['name']}", source='management', severity='medium')
|
||||
raise
|
||||
|
||||
# Create companies in rides app (for manufacturers and designers)
|
||||
@@ -356,11 +359,11 @@ class Command(BaseCommand):
|
||||
}"
|
||||
)
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error creating ride company {data['name']}: {str(e)}")
|
||||
capture_and_log(e, f"Create ride company {data['name']}", source='management', severity='medium')
|
||||
raise
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error in create_companies: {str(e)}")
|
||||
capture_and_log(e, 'Create companies', source='management', severity='high')
|
||||
raise
|
||||
|
||||
def create_parks(self):
|
||||
@@ -518,19 +521,18 @@ class Command(BaseCommand):
|
||||
park_location.set_coordinates(loc_data["latitude"], loc_data["longitude"])
|
||||
park_location.save()
|
||||
except Exception as e:
|
||||
self.logger.error(
|
||||
f"Error creating location for park {
|
||||
park_data['name']
|
||||
}: {str(e)}"
|
||||
capture_and_log(
|
||||
e, f"Create location for park {park_data['name']}",
|
||||
source='management', severity='medium'
|
||||
)
|
||||
raise
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error creating park {park_data['name']}: {str(e)}")
|
||||
capture_and_log(e, f"Create park {park_data['name']}", source='management', severity='medium')
|
||||
raise
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error in create_parks: {str(e)}")
|
||||
capture_and_log(e, 'Create parks', source='management', severity='high')
|
||||
raise
|
||||
|
||||
def create_rides(self):
|
||||
@@ -597,7 +599,7 @@ class Command(BaseCommand):
|
||||
}"
|
||||
)
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error creating ride model {model_data['name']}: {str(e)}")
|
||||
capture_and_log(e, f"Create ride model {model_data['name']}", source='management', severity='medium')
|
||||
raise
|
||||
|
||||
# Create rides
|
||||
@@ -822,19 +824,18 @@ class Command(BaseCommand):
|
||||
stats_data = ride_data["coaster_stats"]
|
||||
RollerCoasterStats.objects.create(ride=ride, **stats_data)
|
||||
except Exception as e:
|
||||
self.logger.error(
|
||||
f"Error creating stats for ride {ride_data['name']}: {
|
||||
str(e)
|
||||
}"
|
||||
capture_and_log(
|
||||
e, f"Create stats for ride {ride_data['name']}",
|
||||
source='management', severity='medium'
|
||||
)
|
||||
raise
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error creating ride {ride_data['name']}: {str(e)}")
|
||||
capture_and_log(e, f"Create ride {ride_data['name']}", source='management', severity='medium')
|
||||
raise
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error in create_rides: {str(e)}")
|
||||
capture_and_log(e, 'Create rides', source='management', severity='high')
|
||||
raise
|
||||
|
||||
def create_park_areas(self):
|
||||
@@ -967,11 +968,11 @@ class Command(BaseCommand):
|
||||
} in {park.name}"
|
||||
)
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error creating areas for park {area_group['park']}: {str(e)}")
|
||||
capture_and_log(e, f"Create areas for park {area_group['park']}", source='management', severity='medium')
|
||||
raise
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error in create_park_areas: {str(e)}")
|
||||
capture_and_log(e, 'Create park areas', source='management', severity='high')
|
||||
raise
|
||||
|
||||
def create_reviews(self):
|
||||
@@ -1043,10 +1044,9 @@ class Command(BaseCommand):
|
||||
}"
|
||||
)
|
||||
except Exception as e:
|
||||
self.logger.error(
|
||||
f"Error creating park review for {review_data['park']}: {
|
||||
str(e)
|
||||
}"
|
||||
capture_and_log(
|
||||
e, f"Create park review for {review_data['park']}",
|
||||
source='management', severity='medium'
|
||||
)
|
||||
raise
|
||||
|
||||
@@ -1102,15 +1102,14 @@ class Command(BaseCommand):
|
||||
}"
|
||||
)
|
||||
except Exception as e:
|
||||
self.logger.error(
|
||||
f"Error creating ride review for {review_data['ride']}: {
|
||||
str(e)
|
||||
}"
|
||||
capture_and_log(
|
||||
e, f"Create ride review for {review_data['ride']}",
|
||||
source='management', severity='medium'
|
||||
)
|
||||
raise
|
||||
|
||||
self.stdout.write(self.style.SUCCESS("Sample data creation completed!"))
|
||||
|
||||
except Exception as e:
|
||||
self.logger.error(f"Error in create_reviews: {str(e)}")
|
||||
capture_and_log(e, 'Create reviews', source='management', severity='high')
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user