def test_order_make(self): order_test = Order(client_phone=8432424, type=Order.TYPE_DINNER_WAGON, state=Order.STATE_DONE, order_date=date(2014, 12, 12), execute_date=datetime(2014, 12, 12).date()) order_test.make() self.assertEqual(order_test.state.__str__(), '4', 'State of order is not equal') self.assertEqual(order_test.type, Order.TYPE_DINNER_WAGON)
def get_order_form(request, establishment_id, order_type): """Возвращает на страницу соответствующую форму, тип зависит от order_type: 0 - заказ столика 1 - заказ самовывоза 2 - заказ доставки""" # проверям, нужно ли вообще пользователю показывать форму (вдруг он ничего не заказал?) # проверяем, есть ли в сессии ключи, соответствующие блюдам выбранного заведения establishment_dishes = Dish.objects.filter(establishmentdish__establishment__id=establishment_id) is_valid_request = False for key in request.session.keys(): if key != 'cart_price': if establishment_dishes.filter(id=key).first() is not None: is_valid_request = True break if is_valid_request: order_types = Order.ORDER_TYPE if order_type == '1': if request.method == 'POST': form = PickUpForm(establishment_id, request.POST) if form.is_valid(): order_client_phone = form.cleaned_data['phone'] order_order_type = order_type order_execute_date = form.cleaned_data['date'] order_execute_time = form.cleaned_data['time'] order_contact_account = Employee.objects.filter( establishment__id=establishment_id ).first() order_branch_id = int(request.POST.get('address')) order_establishment_branch = EstablishmentBranch.objects.filter( id=order_branch_id ).first() new_order = Order( client_phone=order_client_phone, type=order_order_type, execute_date=order_execute_date, execute_time=order_execute_time, contact_account=order_contact_account, establishment_branch=order_establishment_branch ) new_order.save() for key in request.session.keys(): if key != 'cart_price': row = OrdersCartRow( establishment_dish=EstablishmentDish.objects.get(dish__id=key), dishes_count=request.session[key], order=new_order, ) row.save() new_order.make(type='pickup') new_order.save(update_fields=['type', 'state']) # удаление из сессии оформленных в заказе блюд и корзины, при необходимости keys_for_delete = [] for key in request.session.keys(): if key != 'cart_price': if establishment_dishes.get(id=key) is not None: keys_for_delete.append(key) for key in keys_for_delete: del request.session[key] is_cart_empty = True for key in request.session.keys(): if key != 'cart_price': is_cart_empty = False if is_cart_empty: del request.session['cart_price'] establishment = Establishment.objects.get(id=establishment_id) return render( request, 'orders/order_created.html', { 'order_type': order_type, 'establishment_id': establishment_id, 'establishment_name': establishment.name, 'establishment_email': establishment.email, 'establishment_branch_order_phone': order_establishment_branch.order_phone_number, 'establishment_branch_help_phone': order_establishment_branch.help_phone_number } ) else: if request.POST.get('address_changed') == '1': show_errors = 0 else: show_errors = 1 else: form = PickUpForm(establishment_id) show_errors = 0 return render( request, 'orders/make_order_form.html', { # show_form определяет, нужно ли показывать форму пользователю 'show_form': 1, 'show_errors': show_errors, 'establishment_id': establishment_id, 'form': form, 'order_types_list': order_types, 'current_order_type': order_type } ) elif order_type == '2': if request.method == 'POST': form = DeliveryForm(request.POST) if form.is_valid(): order_client_phone = form.cleaned_data['phone'] order_order_type = order_type order_execute_date = form.cleaned_data['date'] order_execute_time = form.cleaned_data['time'] order_contact_account = Employee.objects.filter( establishment__id=establishment_id ).first() order_delivery_address = request.POST.get('address') new_order = Order( client_phone=order_client_phone, type=order_order_type, execute_date=order_execute_date, execute_time=order_execute_time, contact_account=order_contact_account, delivery_address=order_delivery_address ) new_order.save() for key in request.session.keys(): if key != 'cart_price': row = OrdersCartRow( establishment_dish=EstablishmentDish.objects.get(dish__id=key), dishes_count=request.session[key], order=new_order, ) row.save() new_order.make(type='delivery') new_order.save(update_fields=['type', 'state']) # удаление из сессии оформленных в заказе блюд и корзины, при необходимости keys_for_delete = [] for key in request.session.keys(): if key != 'cart_price': if establishment_dishes.get(id=key) is not None: keys_for_delete.append(key) for key in keys_for_delete: del request.session[key] is_cart_empty = True for key in request.session.keys(): if key != 'cart_price': is_cart_empty = False if is_cart_empty: del request.session['cart_price'] establishment = Establishment.objects.get(id=establishment_id) return render( request, 'orders/order_created.html', { 'order_type': order_type, 'establishment_id': establishment_id, 'establishment_name': establishment.name, 'establishment_email': establishment.email, 'establishment_branch_order_phone': '', 'establishment_branch_help_phone': '' } ) else: form = DeliveryForm() show_errors = 1 return render( request, 'orders/make_order_form.html', { # show_form определяет, нужно ли показывать форму пользователю 'show_form': 1, 'show_errors': show_errors, 'establishment_id': establishment_id, 'form': form, 'order_types_list': order_types, 'current_order_type': order_type } ) else: if request.method == 'POST': if request.POST.get('address_changed') == '1': # выб выбран другой филиал заведения branch_id = request.POST.get('address') form = TableForm(establishment_id, branch_id, -1, -1, request.POST) show_errors = 0 show_custom_date_error = 0 elif request.POST.get('show_tables') == '1': # была нажата кнопка показа столиков branch_id = request.POST.get('address') hall_type = request.POST.get('hall') order_date_str = request.POST.get('date') try: time_structure = time.strptime(order_date_str, '%Y-%m-%d') order_date = datetime(time_structure.tm_year, time_structure.tm_mon, time_structure.tm_mday) border_date = datetime(datetime.now().year, datetime.now().month, datetime.now().day) if order_date < border_date: form = TableForm(establishment_id, branch_id, hall_type, -1, request.POST) show_errors = 0 show_custom_date_error = 1 else: form = TableForm(establishment_id, branch_id, hall_type, order_date, request.POST) show_errors = 0 show_custom_date_error = 0 except ValueError: form = TableForm(establishment_id, branch_id, hall_type, -1, request.POST) show_errors = 1 show_custom_date_error = 0 except TypeError: try: time_structure = time.strptime(order_date_str, '%Y-%m-%d') order_date = datetime(time_structure.tm_year, time_structure.tm_mon, time_structure.tm_mday) border_date = datetime(datetime.now().year, datetime.now().month, datetime.now().day) if order_date < border_date: form = TableForm(establishment_id, branch_id, hall_type, -1, request.POST) show_errors = 0 show_custom_date_error = 1 else: form = TableForm(establishment_id, branch_id, hall_type, order_date, request.POST) show_errors = 0 show_custom_date_error = 0 except ValueError: form = TableForm(establishment_id, branch_id, hall_type, -1, request.POST) show_errors = 1 show_custom_date_error = 0 else: branch_id = request.POST.get('address') hall_type = request.POST.get('hall') order_date_str = request.POST.get('date') try: time_structure = time.strptime(order_date_str, '%Y-%m-%d') order_date = datetime(time_structure.tm_year, time_structure.tm_mon, time_structure.tm_mday) border_date = datetime(datetime.now().year, datetime.now().month, datetime.now().day) if order_date < border_date: form = TableForm(establishment_id, branch_id, hall_type, -1, request.POST) else: form = TableForm(establishment_id, branch_id, hall_type, order_date, request.POST) except ValueError: form = TableForm(establishment_id, branch_id, hall_type, -1, request.POST) except TypeError: try: time_structure = time.strptime(order_date_str, '%Y-%m-%d') order_date = datetime(time_structure.tm_year, time_structure.tm_mon, time_structure.tm_mday) border_date = datetime(datetime.now().year, datetime.now().month, datetime.now().day) if order_date < border_date: form = TableForm(establishment_id, branch_id, hall_type, -1, request.POST) else: form = TableForm(establishment_id, branch_id, hall_type, order_date, request.POST) except ValueError: form = TableForm(establishment_id, branch_id, hall_type, -1, request.POST) if form.is_valid(): # создание и запись в БД заказа order_client_phone = form.cleaned_data['phone'] order_order_type = order_type order_execute_date = form.cleaned_data['date'] order_execute_time = form.cleaned_data['time'] order_contact_account = Employee.objects.filter( establishment__id=establishment_id ).first() order_branch_id = int(request.POST.get('address')) order_establishment_branch = EstablishmentBranch.objects.filter( id=order_branch_id ).first() order_table_seats = int(request.POST.get('table')) order_hall_type = request.POST.get('hall') order_dinner_wagon = DinnerWagon.objects.filter( seats=order_table_seats, hall__type=order_hall_type, hall__branch=order_establishment_branch ).first() new_order = Order( client_phone=order_client_phone, type=order_order_type, execute_date=order_execute_date, execute_time=order_execute_time, contact_account=order_contact_account, establishment_branch=order_establishment_branch, dinner_wagon=order_dinner_wagon ) new_order.save() for key in request.session.keys(): if key != 'cart_price': row = OrdersCartRow( establishment_dish=EstablishmentDish.objects.get(dish__id=key), dishes_count=request.session[key], order=new_order, ) row.save() new_order.make(type='table') new_order.save(update_fields=['type', 'state']) # удаление из сессии оформленных в заказе блюд и корзины, при необходимости keys_for_delete = [] for key in request.session.keys(): if key != 'cart_price': if establishment_dishes.get(id=key) is not None: keys_for_delete.append(key) for key in keys_for_delete: del request.session[key] is_cart_empty = True for key in request.session.keys(): if key != 'cart_price': is_cart_empty = False if is_cart_empty: del request.session['cart_price'] establishment = Establishment.objects.get(id=establishment_id) return render( request, 'orders/order_created.html', { 'order_type': order_type, 'establishment_id': establishment_id, 'establishment_name': establishment.name, 'establishment_email': establishment.email, 'establishment_branch_order_phone': order_establishment_branch.order_phone_number, 'establishment_branch_help_phone': order_establishment_branch.help_phone_number } ) else: show_errors = 1 show_custom_date_error = 0 else: form = TableForm(establishment_id, -1, -1, -1) show_errors = 0 show_custom_date_error = 0 return render( request, 'orders/make_order_form.html', { # show_form определяет, нужно ли показывать форму пользователю 'show_form': 1, 'show_errors': show_errors, 'show_custom_date_error': show_custom_date_error, 'establishment_id': establishment_id, 'form': form, 'order_types_list': order_types, 'current_order_type': order_type } ) else: show_errors = 0 return render( request, 'orders/make_order_form.html', { # show_form определяет, нужно ли показывать форму пользователю 'show_form': 0, 'show_errors': show_errors, 'establishment_id': establishment_id } )