diff --git a/azu_bot_django/azu_bot_django/settings.py b/azu_bot_django/azu_bot_django/settings.py index bf29976..0c29edb 100644 --- a/azu_bot_django/azu_bot_django/settings.py +++ b/azu_bot_django/azu_bot_django/settings.py @@ -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', diff --git a/azu_bot_django/reservation/serializers.py b/azu_bot_django/reservation/serializers.py index 4388fff..fa9b8e5 100644 --- a/azu_bot_django/reservation/serializers.py +++ b/azu_bot_django/reservation/serializers.py @@ -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, @@ -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', @@ -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): """Соединяем столы""" diff --git a/requirements.txt b/requirements.txt index 1058e31..be3cc28 100644 --- a/requirements.txt +++ b/requirements.txt @@ -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 \ No newline at end of file