示例#1
0
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
    })
示例#2
0
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'])
示例#3
0
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)
示例#4
0
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'])
示例#5
0
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})
示例#6
0
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'])
示例#7
0
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)