def monitor_page(request): user = request.user if not user.groups.filter(name__in=[admins[5], ]).exists(): logging.access_deny(user, log_messages['']) return Response(status=status.HTTP_401_UNAUTHORIZED) admin_list = User.objects.filter(groups__name__in=admins).values('username') return render(request, 'admin/admin_monitor.html', context={ 'admin_list': admin_list })
def enter_promotion_editor(request): user = request.user try: if not user.groups.filter(name__in=[ admins[6], ]).exists(): logging.access_deny(user, log_messages['promotion_editor_access_deny']) return Response(status=status.HTTP_401_UNAUTHORIZED) return render(request, 'admin/promotion_editor.html') except: logging.error(user, log_messages['promotion_editor_access_failure'])
def search_orders(request): user = request.user logging.info(user, log_messages['search_order_try']) try: if not request.user.groups.filter( name__in=[admins[5], admins[8]]).exists(): logging.access_deny(user, log_messages['search_order_access_deny']) return Response(status=status.HTTP_401_UNAUTHORIZED) sent_filter = request.data['filter'] orders = Order.objects.filter() if sent_filter['order_id'] != '': orders = orders.filter(order_id__contains=sent_filter['order_id']) if sent_filter['customer_id'] != '': orders = orders.filter( customer__email__contains=sent_filter['customer_id']) if sent_filter['customer_name'] != '': orders = orders.filter( customer__company_name__contains=sent_filter['customer_name']) if sent_filter['city'] != '': orders = orders.filter( customer__city__contains=sent_filter['city']) if len(sent_filter['state_checks']) > 0: orders = orders.filter(status=sent_filter['state_checks'][0]) # for state in sent_filter['state_checks']: # if state == admins[1]: # orders = orders.filter(orderAdmin_confirmed=True) # elif state == admins[2]: # orders = orders.filter(sellAdmin_confirmed=True) # elif state == admins[3]: # orders = orders.filter(warehouseAdmin_confirmed=True) # elif state == admins[4]: # orders = orders.filter(financeAdmin_confirmed=True) # elif state == admins[8]: # orders = orders.filter(administration_process=True) orders = OrderSerializer( orders.all()[sent_filter['page'] * 30:sent_filter['page'] * 30 + 30], many=True) orders = json.loads(JSONRenderer().render(orders.data)) for order in orders: order['created_date'] = jalali.Gregorian( order['created_date'].split('T')[0]).persian_string() if order['last_change_date']: order['last_change_date'] = jalali.Gregorian( order['last_change_date'].split('T')[0]).persian_string() logging.success(user, log_messages['search_order_success']) return Response({'orders': orders}) except Exception as e: logging.error(user, log_messages['search_order_failure']) return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def reject_order(request): user = request.user logging.info(user, log_messages['reject_order_try']) try: if user.groups.filter(name__in=[ admins[2], ]).exists(): admin_verified_order = request.data['order'] order = Order.objects.filter( order_id=admin_verified_order['order_id'], status=Order.ORDER_ADMIN).all().first() order.status = Order.ADMINISTRATION order.save() else: logging.access_deny(user, log_messages['reject_order_access_deny']) return Response(status=status.HTTP_401_UNAUTHORIZED) logging.success(user, log_messages['reject_order_success']) return Response(status=status.HTTP_200_OK) except: logging.error(user, log_messages['reject_order_failure'])
def get_orders(request): # try: user = request.user if user.groups.filter(name__in=[ admins[1], ]).exists(): orders = Order.objects.filter(status=Order.CHECKED_OUT) \ .all().order_by('-created_date') elif user.groups.filter(name__in=[ admins[2], ]).exists(): orders = Order.objects.filter(status=Order.ORDER_ADMIN) \ .all().order_by('-created_date') elif user.groups.filter(name__in=[ admins[4], ]).exists(): orders = Order.objects.filter(status=Order.SELL_ADMIN) \ .all().order_by('-created_date') elif user.groups.filter(name__in=[ admins[3], ]).exists(): orders = Order.objects.filter(status=Order.FINANCE_ADMIN) \ .all().order_by('-created_date') elif user.groups.filter(name__in=[ admins[8], ]).exists(): orders = Order.objects.filter(status=Order.ADMINISTRATION) \ .all().order_by('-created_date') else: logging.access_deny(user, log_messages['fetch_order_data_access_deny']) return Response(status=status.HTTP_401_UNAUTHORIZED) logging.success(user, log_messages['fetch_order_data']) orders = OrderSerializer(orders, many=True) orders = json.loads(JSONRenderer().render(orders.data)) for order in orders: order['created_date'] = jalali.Gregorian( order['created_date'].split('T')[0]).persian_string() if order['last_change_date']: order['last_change_date'] = jalali.Gregorian( order['last_change_date'].split('T')[0]).persian_string() return Response({'orders': orders})
def verify_order(request): user = request.user try: logging.info(user, log_messages['verify_order_try']) if user.groups.filter(name__in=[ admins[1], ]).exists(): admin_verified_order = request.data['order'] order = Order.objects.filter( order_id=admin_verified_order['order_id'], status=Order.CHECKED_OUT).all().first() order.last_change_date = timezone.now() # order.orderAdmin_confirmed = True order.status = Order.ORDER_ADMIN order.orderAdmin_comment = admin_verified_order[ 'orderAdmin_comment'] order.cost = admin_verified_order['cost'] saved_items = ShopItem.objects.filter(order=order).all() if len(saved_items) != len(admin_verified_order['items']): return Response(status=status.HTTP_400_BAD_REQUEST) for index, item in enumerate(admin_verified_order['items']): saved_items[index].order_admin_verified_count = int( item['order_admin_verified_count']) saved_items[index].sell_admin_verified_count = int( item['order_admin_verified_count']) saved_items[index].save() order.save() send_verification_sms( order.customer.phone, "کاربر گرامی، سفارش شما از مرحله سفارش با موفقیت عبور کرد") elif user.groups.filter(name__in=[ admins[2], ]).exists(): admin_verified_order = request.data['order'] order = Order.objects.filter( order_id=admin_verified_order['order_id'], status=Order.ORDER_ADMIN).all().first() order.last_change_date = timezone.now() # order.sellAdmin_confirmed = True order.status = Order.SELL_ADMIN order.sellAdmin_comment = admin_verified_order['sellAdmin_comment'] order.cost = admin_verified_order['cost'] saved_items = ShopItem.objects.filter(order=order).all() if len(saved_items) != len(admin_verified_order['items']): return Response(status=status.HTTP_400_BAD_REQUEST) for index, item in enumerate(admin_verified_order['items']): saved_items[index].sell_admin_verified_count = item[ 'sell_admin_verified_count'] saved_items[index].warehouse_admin_verified_count = item[ 'sell_admin_verified_count'] saved_items[index].save() order.save() send_verification_sms( order.customer.phone, "کاربر گرامی، سفارش شما از مرحله فروش با موفقیت عبور کرد") elif user.groups.filter(name__in=[ admins[3], ]).exists(): admin_verified_order = request.data['order'] order = Order.objects.filter( order_id=admin_verified_order['order_id'], status=Order.FINANCE_ADMIN).all().first() order.sent_date = timezone.now() # order.warehouseAdmin_confirmed = True order.status = Order.WAREHOUSE_ADMIN order.warehouseAdmin_comment = admin_verified_order[ 'warehouseAdmin_comment'] order.save() send_verification_sms( order.customer.phone, "کاربر گرامی، سفارش شما از از انبار خارج شد") else: logging.access_deny(user, log_messages['verify_order_access_deny']) return Response(status=status.HTTP_401_UNAUTHORIZED) logging.success(user, log_messages['verify_order_success']) return Response(status=status.HTTP_200_OK) except: logging.error(user, log_messages['verify_order_failure'])
def submit_product(request): user = request.user # try: logging.info(user, log_messages['submit_product_try']) if not user.groups.filter(name__in=[ admins[6], ]).exists(): logging.access_deny(user, log_messages['submit_product_access_deny']) return Response(status=status.HTTP_401_UNAUTHORIZED) product = request.data['form'] product_name = product['name'] product_code = product['code'] product_price = product['price'] product_image = product['image'] product_desc = product['description'] if product['isMelody']: product_melody = product['music'] if Melody.objects.filter(name=product_name).exists(): new_melody = Melody.objects.filter(name=product_name).all().first() else: new_melody = Melody() new_melody.name = product_name new_melody.melody_code = product_code # new_melody.music new_melody.save() if product_image is not None: file, file_name = decode_file(product_image) new_melody.picture.save(file_name, file, save=True) if product_melody is not None: file, file_name = decode_file(product_melody) new_melody.music.save(file_name, file, save=True) logging.success(user, log_messages['submit_product_success']) return Response(status=status.HTTP_200_OK) else: if Melody.objects.filter(name=product_name).exists(): new_series = SchemaSeries.objects.filter( name=product_name).all().first() else: new_series = SchemaSeries() new_series.name = product_name new_series.product_code = product_code new_series.description = product_desc new_series.price = product_price product_melodies = product['melodies'] new_series.save() for i in range(len(product_melodies)): # try: melody = Melody.objects.filter( name__contains=product_melodies[i]).all()[0] new_series.melodies.add(melody) # except: # logging.error(user, log_messages['submit_product_failure']) # return Response({'msg': product_melodies[i] + ' is not in database'}, # status=status.HTTP_400_BAD_REQUEST) # new_series.picture new_series.save() if product_image is not None: file, file_name = decode_file(product_image) new_series.picture.save(file_name, file, save=True) logging.success(user, log_messages['submit_product_success']) return Response(status=status.HTTP_200_OK)