diff --git a/circle/vm/models/activity.py b/circle/vm/models/activity.py index ab74cac..394cf51 100644 --- a/circle/vm/models/activity.py +++ b/circle/vm/models/activity.py @@ -30,7 +30,7 @@ from django.utils.translation import ugettext_lazy as _, ugettext_noop from common.models import ( ActivityModel, activitycontextimpl, create_readable, join_activity_code, - HumanReadableObject, + HumanReadableObject, HumanReadableException, ) from manager.mancelery import celery @@ -39,17 +39,17 @@ from manager.mancelery import celery logger = getLogger(__name__) -class ActivityInProgressError(Exception): +class ActivityInProgressError(HumanReadableException): - def __init__(self, activity, message=None): - if message is None: - message = ("Another activity is currently in progress: '%s' " - "(%s)." - % (activity.activity_code, activity.pk)) - - Exception.__init__(self, message) - - self.activity = activity + @classmethod + def create(cls, activity): + obj = super(ActivityInProgressError, cls).create( + ugettext_noop("%(activity)s activity is currently in progress."), + ugettext_noop("%(activity)s (%(pk)s) activity is currently " + "in progress."), + activity=activity.readable_name, pk=activity.pk) + obj.activity = activity + return obj def _normalize_readable_name(name, default=None): @@ -96,7 +96,7 @@ class InstanceActivity(ActivityModel): # Check for concurrent activities active_activities = instance.activity_log.filter(finished__isnull=True) if concurrency_check and active_activities.exists(): - raise ActivityInProgressError(active_activities[0]) + raise ActivityInProgressError.create(active_activities[0]) activity_code = join_activity_code(cls.ACTIVITY_CODE_BASE, code_suffix) act = cls(activity_code=activity_code, instance=instance, parent=None, @@ -113,7 +113,7 @@ class InstanceActivity(ActivityModel): # Check for concurrent activities active_children = self.children.filter(finished__isnull=True) if concurrency_check and active_children.exists(): - raise ActivityInProgressError(active_children[0]) + raise ActivityInProgressError.create(active_children[0]) act = InstanceActivity( activity_code=join_activity_code(self.activity_code, code_suffix),