diff --git a/services/backend/hotpocket_backend/apps/ui/services/workflows/saves/create.py b/services/backend/hotpocket_backend/apps/ui/services/workflows/saves/create.py index f41c237..321679a 100644 --- a/services/backend/hotpocket_backend/apps/ui/services/workflows/saves/create.py +++ b/services/backend/hotpocket_backend/apps/ui/services/workflows/saves/create.py @@ -2,6 +2,7 @@ from __future__ import annotations from django.contrib import messages +import django.db from django.http import HttpRequest, HttpResponse from django.shortcuts import redirect from django.urls import reverse @@ -21,15 +22,13 @@ class CreateSaveWorkflow(SaveWorkflow): url: str, force_post_save: bool = False, ) -> HttpResponse: - save = self.create( - account.pk, - SaveIn(url=url), - ) + with django.db.transaction.atomic(): + save = self.create( + account.pk, + SaveIn(url=url), + ) - association = self.associate(account.pk, save) - - if save.last_processed_at is None: - processing_result = self.schedule_processing(save) # noqa: F841 + association = self.associate(account.pk, save) response = redirect(reverse('ui.associations.browse')) if force_post_save is True or save.is_netloc_banned is True: @@ -47,4 +46,7 @@ class CreateSaveWorkflow(SaveWorkflow): response.headers['X-HotPocket-Testing-Save-PK'] = save.pk response.headers['X-HotPocket-Testing-Association-PK'] = association.pk + if save.last_processed_at is None: + processing_result = self.schedule_processing(save) # noqa: F841 + return response diff --git a/services/backend/hotpocket_backend/apps/ui/views/integrations/android.py b/services/backend/hotpocket_backend/apps/ui/views/integrations/android.py index 48bbeee..c6765ed 100644 --- a/services/backend/hotpocket_backend/apps/ui/views/integrations/android.py +++ b/services/backend/hotpocket_backend/apps/ui/views/integrations/android.py @@ -4,7 +4,6 @@ from __future__ import annotations import http import logging -import django.db from django.http import HttpRequest, HttpResponse from django.shortcuts import render from django.views.decorators.csrf import csrf_exempt @@ -21,19 +20,18 @@ def share_sheet(request: HttpRequest) -> HttpResponse: LOGGER.debug('POST=`%s`', request.POST) try: - with django.db.transaction.atomic(): - assert request.user.is_anonymous is False, 'Login required' - assert 'text' in request.POST, 'Bad request: Missing `text`' + assert request.user.is_anonymous is False, 'Login required' + assert 'text' in request.POST, 'Bad request: Missing `text`' - url = request.POST['text'].split('\n')[0].strip() - assert url != '', 'Bad request: Empty `text`' + url = request.POST['text'].split('\n')[0].strip() + assert url != '', 'Bad request: Empty `text`' - return CreateSaveWorkflow().run( - request=request, - account=request.user, - url=url, - force_post_save=True, - ) + return CreateSaveWorkflow().run( + request=request, + account=request.user, + url=url, + force_post_save=True, + ) except Exception as exception: LOGGER.error( 'Unhandled exception: %s', diff --git a/services/backend/hotpocket_backend/apps/ui/views/integrations/ios.py b/services/backend/hotpocket_backend/apps/ui/views/integrations/ios.py index 9d36459..0f6ad53 100644 --- a/services/backend/hotpocket_backend/apps/ui/views/integrations/ios.py +++ b/services/backend/hotpocket_backend/apps/ui/views/integrations/ios.py @@ -4,7 +4,6 @@ from __future__ import annotations import http import logging -import django.db from django.http import HttpRequest, HttpResponse from django.shortcuts import render @@ -19,19 +18,18 @@ def shortcut(request: HttpRequest) -> HttpResponse: LOGGER.debug('GET=`%s`', request.GET) try: - with django.db.transaction.atomic(): - assert request.user.is_anonymous is False, 'Login required' - assert 'url' in request.GET, 'Bad request: Missing `url`' + assert request.user.is_anonymous is False, 'Login required' + assert 'url' in request.GET, 'Bad request: Missing `url`' - url = request.GET['url'].split('\n')[0].strip() - assert url != '', 'Bad request: Empty `url`' + url = request.GET['url'].split('\n')[0].strip() + assert url != '', 'Bad request: Empty `url`' - return CreateSaveWorkflow().run( - request=request, - account=request.user, - url=url, - force_post_save=True, - ) + return CreateSaveWorkflow().run( + request=request, + account=request.user, + url=url, + force_post_save=True, + ) except Exception as exception: LOGGER.error( 'Unhandled exception: %s', diff --git a/services/backend/hotpocket_backend/apps/ui/views/saves.py b/services/backend/hotpocket_backend/apps/ui/views/saves.py index 04d96b7..fd6d0f4 100644 --- a/services/backend/hotpocket_backend/apps/ui/views/saves.py +++ b/services/backend/hotpocket_backend/apps/ui/views/saves.py @@ -4,7 +4,6 @@ from __future__ import annotations import http import logging -import django.db from django.http import HttpRequest, HttpResponse from django.shortcuts import render from django.urls import reverse @@ -24,12 +23,11 @@ class CreateView(AccountRequiredMixin, FormView): form_class = CreateForm def form_valid(self, form: CreateForm) -> HttpResponse: - with django.db.transaction.atomic(): - return CreateSaveWorkflow().run( - request=self.request, - account=self.request.user, - url=form.cleaned_data['url'], - ) + return CreateSaveWorkflow().run( + request=self.request, + account=self.request.user, + url=form.cleaned_data['url'], + ) def get_success_url(self) -> str: return reverse('ui.associations.browse') diff --git a/services/backend/setup.cfg b/services/backend/setup.cfg index be273a0..388b2b9 100644 --- a/services/backend/setup.cfg +++ b/services/backend/setup.cfg @@ -2,8 +2,9 @@ extend-exclude = hotpocket_backend/apps/*/migrations/*.py, node_modules/**/*.py, - skel/*.py - skel/*/*.py + skel/*.py, + skel/*/*.py, + playground.py ignore = E131,W503,W504 max-line-length = 119 hang-closing = False