def test_no_pending_delete_trigger_on_skipped_delete(self): org = self.create_organization(name="test") project = self.create_project(organization=org) repo = self.create_repo(project=project, name="example/example") signal_handler = Mock() pending_delete.connect(signal_handler) ScheduledDeletion.schedule(instance=repo, actor=self.user, days=0) with self.tasks(): run_scheduled_deletions() pending_delete.disconnect(signal_handler) assert signal_handler.call_count == 0
def test_triggers_pending_delete_signal(self): signal_handler = Mock() pending_delete.connect(signal_handler) org = self.create_organization(name="test") team = self.create_team(organization=org, name="delete") ScheduledDeletion.schedule(instance=team, actor=self.user, days=0) with self.tasks(): run_scheduled_deletions() assert signal_handler.call_count == 1 args = signal_handler.call_args_list[0][1] assert args["instance"] == team assert args["actor"] == self.user pending_delete.disconnect(signal_handler)
return # TODO(lb): I'm assuming that this is used by integrations... is it? def handle_exception(exc): from sentry.exceptions import InvalidIdentity, PluginError from sentry.integrations.exceptions import IntegrationError if isinstance(exc, (IntegrationError, PluginError, InvalidIdentity)): error = exc.message else: error = 'An unknown error occurred' if actor is not None: msg = instance.generate_delete_fail_email(error) msg.send_async(to=[actor.email]) if instance.has_integration_provider(): try: instance.get_provider().delete_repository(repo=instance) except Exception as exc: handle_exception(exc) else: try: instance.get_provider().delete_repository( repo=instance, actor=actor, ) except Exception as exc: handle_exception(exc) pending_delete.connect(on_delete, sender=Repository, weak=False)
# TODO(lb): I'm assuming that this is used by integrations... is it? def handle_exception(exc): from sentry.exceptions import InvalidIdentity, PluginError from sentry.integrations.exceptions import IntegrationError if isinstance(exc, (IntegrationError, PluginError, InvalidIdentity)): error = exc.message else: error = 'An unknown error occurred' if actor is not None: msg = instance.generate_delete_fail_email(error) msg.send_async(to=[actor.email]) if instance.has_integration_provider(): try: instance.get_provider().on_delete_repository(repo=instance) except Exception as exc: handle_exception(exc) else: try: instance.get_provider().delete_repository( repo=instance, actor=actor, ) except Exception as exc: handle_exception(exc) pending_delete.connect(on_delete, sender=Repository, weak=False) pre_delete.connect(delete_pending_deletion_option, sender=Repository, weak=False)