mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-08-13 13:09:41 +02:00
Merge pull request #3430 from cisagov/za/3145-use-transaction-atomic
#3145: Change usage of transaction.atomic() to be inside try/catch instead of outside of it [litterbox]
This commit is contained in:
commit
38e6b06d3c
7 changed files with 114 additions and 136 deletions
|
@ -3,7 +3,6 @@ from django.utils import timezone
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
from faker import Faker
|
from faker import Faker
|
||||||
from django.db import transaction
|
|
||||||
|
|
||||||
from registrar.fixtures.fixtures_requests import DomainRequestFixture
|
from registrar.fixtures.fixtures_requests import DomainRequestFixture
|
||||||
from registrar.fixtures.fixtures_users import UserFixture
|
from registrar.fixtures.fixtures_users import UserFixture
|
||||||
|
@ -29,7 +28,6 @@ class DomainFixture(DomainRequestFixture):
|
||||||
def load(cls):
|
def load(cls):
|
||||||
# Lumped under .atomic to ensure we don't make redundant DB calls.
|
# Lumped under .atomic to ensure we don't make redundant DB calls.
|
||||||
# This bundles them all together, and then saves it in a single call.
|
# This bundles them all together, and then saves it in a single call.
|
||||||
with transaction.atomic():
|
|
||||||
try:
|
try:
|
||||||
# Get the usernames of users created in the UserFixture
|
# Get the usernames of users created in the UserFixture
|
||||||
created_usernames = [user_data["username"] for user_data in UserFixture.ADMINS + UserFixture.STAFF]
|
created_usernames = [user_data["username"] for user_data in UserFixture.ADMINS + UserFixture.STAFF]
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
from faker import Faker
|
from faker import Faker
|
||||||
from django.db import transaction
|
|
||||||
|
|
||||||
from registrar.models import User, DomainRequest, FederalAgency
|
from registrar.models import User, DomainRequest, FederalAgency
|
||||||
from registrar.models.portfolio import Portfolio
|
from registrar.models.portfolio import Portfolio
|
||||||
|
@ -84,10 +83,6 @@ class PortfolioFixture:
|
||||||
def load(cls):
|
def load(cls):
|
||||||
"""Creates portfolios."""
|
"""Creates portfolios."""
|
||||||
logger.info("Going to load %s portfolios" % len(cls.PORTFOLIOS))
|
logger.info("Going to load %s portfolios" % len(cls.PORTFOLIOS))
|
||||||
|
|
||||||
# Lumped under .atomic to ensure we don't make redundant DB calls.
|
|
||||||
# This bundles them all together, and then saves it in a single call.
|
|
||||||
with transaction.atomic():
|
|
||||||
try:
|
try:
|
||||||
user = User.objects.all().last()
|
user = User.objects.all().last()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -116,7 +111,7 @@ class PortfolioFixture:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(e)
|
logger.warning(e)
|
||||||
|
|
||||||
# Bulk create domain requests
|
# Bulk create portfolios
|
||||||
if len(portfolios_to_create) > 0:
|
if len(portfolios_to_create) > 0:
|
||||||
try:
|
try:
|
||||||
Portfolio.objects.bulk_create(portfolios_to_create)
|
Portfolio.objects.bulk_create(portfolios_to_create)
|
||||||
|
|
|
@ -3,7 +3,6 @@ from django.utils import timezone
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
from faker import Faker
|
from faker import Faker
|
||||||
from django.db import transaction
|
|
||||||
|
|
||||||
from registrar.fixtures.fixtures_portfolios import PortfolioFixture
|
from registrar.fixtures.fixtures_portfolios import PortfolioFixture
|
||||||
from registrar.fixtures.fixtures_suborganizations import SuborganizationFixture
|
from registrar.fixtures.fixtures_suborganizations import SuborganizationFixture
|
||||||
|
@ -303,13 +302,6 @@ class DomainRequestFixture:
|
||||||
def load(cls):
|
def load(cls):
|
||||||
"""Creates domain requests for each user in the database."""
|
"""Creates domain requests for each user in the database."""
|
||||||
logger.info("Going to load %s domain requests" % len(cls.DOMAINREQUESTS))
|
logger.info("Going to load %s domain requests" % len(cls.DOMAINREQUESTS))
|
||||||
|
|
||||||
# Lumped under .atomic to ensure we don't make redundant DB calls.
|
|
||||||
# This bundles them all together, and then saves it in a single call.
|
|
||||||
# The atomic block will cause the code to stop executing if one instance in the
|
|
||||||
# nested iteration fails, which will cause an early exit and make it hard to debug.
|
|
||||||
# Comment out with transaction.atomic() when debugging.
|
|
||||||
with transaction.atomic():
|
|
||||||
try:
|
try:
|
||||||
# Get the usernames of users created in the UserFixture
|
# Get the usernames of users created in the UserFixture
|
||||||
created_usernames = [user_data["username"] for user_data in UserFixture.ADMINS + UserFixture.STAFF]
|
created_usernames = [user_data["username"] for user_data in UserFixture.ADMINS + UserFixture.STAFF]
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
from faker import Faker
|
from faker import Faker
|
||||||
from django.db import transaction
|
|
||||||
|
|
||||||
from registrar.models.portfolio import Portfolio
|
from registrar.models.portfolio import Portfolio
|
||||||
from registrar.models.suborganization import Suborganization
|
from registrar.models.suborganization import Suborganization
|
||||||
|
@ -34,8 +33,6 @@ class SuborganizationFixture:
|
||||||
def load(cls):
|
def load(cls):
|
||||||
"""Creates suborganizations."""
|
"""Creates suborganizations."""
|
||||||
logger.info(f"Going to load {len(cls.SUBORGS)} suborgs")
|
logger.info(f"Going to load {len(cls.SUBORGS)} suborgs")
|
||||||
|
|
||||||
with transaction.atomic():
|
|
||||||
portfolios = cls._get_portfolios()
|
portfolios = cls._get_portfolios()
|
||||||
if not portfolios:
|
if not portfolios:
|
||||||
return
|
return
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import logging
|
import logging
|
||||||
import random
|
import random
|
||||||
from faker import Faker
|
from faker import Faker
|
||||||
from django.db import transaction
|
|
||||||
|
|
||||||
from registrar.fixtures.fixtures_portfolios import PortfolioFixture
|
from registrar.fixtures.fixtures_portfolios import PortfolioFixture
|
||||||
from registrar.fixtures.fixtures_users import UserFixture
|
from registrar.fixtures.fixtures_users import UserFixture
|
||||||
|
@ -26,7 +25,6 @@ class UserPortfolioPermissionFixture:
|
||||||
|
|
||||||
# Lumped under .atomic to ensure we don't make redundant DB calls.
|
# Lumped under .atomic to ensure we don't make redundant DB calls.
|
||||||
# This bundles them all together, and then saves it in a single call.
|
# This bundles them all together, and then saves it in a single call.
|
||||||
with transaction.atomic():
|
|
||||||
try:
|
try:
|
||||||
# Get the usernames of users created in the UserFixture
|
# Get the usernames of users created in the UserFixture
|
||||||
created_usernames = [user_data["username"] for user_data in UserFixture.ADMINS + UserFixture.STAFF]
|
created_usernames = [user_data["username"] for user_data in UserFixture.ADMINS + UserFixture.STAFF]
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
from faker import Faker
|
from faker import Faker
|
||||||
from django.db import transaction
|
|
||||||
|
|
||||||
from registrar.models import (
|
from registrar.models import (
|
||||||
User,
|
User,
|
||||||
|
@ -455,7 +454,6 @@ class UserFixture:
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def load(cls):
|
def load(cls):
|
||||||
with transaction.atomic():
|
|
||||||
cls.load_users(cls.ADMINS, "full_access_group", are_superusers=True)
|
cls.load_users(cls.ADMINS, "full_access_group", are_superusers=True)
|
||||||
cls.load_users(cls.STAFF, "cisa_analysts_group")
|
cls.load_users(cls.STAFF, "cisa_analysts_group")
|
||||||
|
|
||||||
|
|
|
@ -149,9 +149,9 @@ class Command(BaseCommand):
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
with transaction.atomic():
|
|
||||||
# Try to delete the portfolios
|
# Try to delete the portfolios
|
||||||
try:
|
try:
|
||||||
|
with transaction.atomic():
|
||||||
summary = []
|
summary = []
|
||||||
for portfolio in portfolios_to_delete:
|
for portfolio in portfolios_to_delete:
|
||||||
portfolio_summary = [f"---- CASCADE SUMMARY for {portfolio.organization_name} -----"]
|
portfolio_summary = [f"---- CASCADE SUMMARY for {portfolio.organization_name} -----"]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue