Skip to content

Commit

Permalink
Fix db bug
Browse files Browse the repository at this point in the history
  • Loading branch information
Certelen committed Nov 28, 2023
1 parent 02c3215 commit 23c8daf
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 26 deletions.
1 change: 0 additions & 1 deletion azu_bot_django/azu_bot_django/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,6 @@ def get_settings(path: str):
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
Expand Down
45 changes: 22 additions & 23 deletions azu_bot_django/reservation/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ def get_available_table(self, validated_data, reservation):
reservation__date=date,
reservation__status='booked'
).values('table')
if quantity == 1:
with transaction.atomic():
with transaction.atomic():
if quantity == 1:
available_bar_tables = Table.objects.select_for_update(
).filter(
cafe__id=cafe.id,
Expand All @@ -60,10 +60,9 @@ def get_available_table(self, validated_data, reservation):
)
available_bar_tables = available_bar_tables.filter(
quantity__gte=1).first()
if available_bar_tables:
reservation.table.add(available_bar_tables)
return
with transaction.atomic():
if available_bar_tables:
reservation.table.add(available_bar_tables)
return
available_simple_tables = Table.objects.select_for_update().filter(
cafe__id=cafe.id,
table_type='simple_table',
Expand All @@ -76,24 +75,24 @@ def get_available_table(self, validated_data, reservation):
).exclude(
id__in=unailable_tables
)
single_table = available_simple_tables.filter(
quantity__gte=quantity).first()
if single_table:
reservation.table.add(single_table)
return
else:
merged_tables = self.merge_tables(
available_simple_tables, quantity)
if merged_tables:
reservation.table.set(merged_tables)
single_table = available_simple_tables.filter(
quantity__gte=quantity).first()
if single_table:
reservation.table.add(single_table)
return
else:
reservation.delete()
raise serializers.ValidationError(
{
'status': 'error',
'message': 'Недостаточно свободных столов.'
}
)
merged_tables = self.merge_tables(
available_simple_tables, quantity)
if merged_tables:
reservation.table.set(merged_tables)
else:
reservation.delete()
raise serializers.ValidationError(
{
'status': 'error',
'message': 'Недостаточно свободных столов.'
}
)

def merge_tables(self, available_tables, required_quantity):
"""Соединяем столы"""
Expand Down
3 changes: 1 addition & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,4 @@ unify==0.5
untokenize==0.1.1
yarl==1.9.2
channels==4.0.0
uvicorn==0.24.0.post1
whitenoise==6.6.0
uvicorn==0.24.0.post1

0 comments on commit 23c8daf

Please sign in to comment.