Skip to content

Commit 17e4d8e

Browse files
Fixes for db atomic save errors
1 parent 1d9e35d commit 17e4d8e

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Generated by Django 4.2.27 on 2025-12-28 00:33
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('web', '0003_lookupdata_date_time'),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='MissingLookup',
16+
fields=[
17+
('id', models.BigAutoField(primary_key=True, serialize=False)),
18+
('date_time', models.DateTimeField(auto_now_add=True)),
19+
('item_type', models.CharField(max_length=20)),
20+
('item_value', models.CharField(max_length=100)),
21+
('language_context', models.CharField(blank=True, max_length=50, null=True)),
22+
('site_visit', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.sitevisit')),
23+
],
24+
),
25+
]

web/views.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
HttpResponseNotFound,
1111
HttpResponseServerError
1212
)
13+
from django.db import transaction
1314
from django.db.models import Count, Q
1415
from django.shortcuts import HttpResponse, render
1516
from django.utils.html import escape, strip_tags
@@ -49,7 +50,8 @@ def store_url_info(request):
4950
user_agent=user_agent,
5051
referer=referer,
5152
)
52-
visit.save()
53+
with transaction.atomic():
54+
visit.save()
5355
return visit
5456
except Exception as e:
5557
logging.error(f"Failed to store URL info: {e}")
@@ -68,7 +70,8 @@ def store_lookup_info(request, visit, language1, version1, language2, version2,
6870
structure=structure,
6971
site_visit=visit
7072
)
71-
info.save()
73+
with transaction.atomic():
74+
info.save()
7275
except Exception as e:
7376
logging.error(f"Failed to store lookup info: {e}")
7477

@@ -83,7 +86,8 @@ def store_missing_info(visit, item_type, item_value, language_context=None):
8386
language_context=language_context,
8487
site_visit=visit
8588
)
86-
info.save()
89+
with transaction.atomic():
90+
info.save()
8791
except Exception as e:
8892
logging.error(f"Failed to store missing info: {e}")
8993

0 commit comments

Comments
 (0)