コード例 #1
0
def ware_delete(warehouseId):
    try:
        get_db('warehouses').delete_one({"_id": ObjectId(warehouseId)})
    except (Exception) as ex:
        return jsonify(status={'success': False})
    else:
        return jsonify(status={'success': True})
コード例 #2
0
def prod_delete(productId):
    try:
        get_db("products").delete_one({"_id": ObjectId(productId)})
    except (Exception) as ex:
        return jsonify(status={'success': False})
    else:
        return jsonify(status={'success': True})
コード例 #3
0
def prod_edit():
    products = get_db("products")
    product_id = request.form.get('productId')
    # if product_id := request.form.get('productId'):
    #     product = products.find_one({"_id": ObjectId(product_id)}, {"_id": 0})
    #     return jsonify(data=product)
    # else:
    product_document = {
        'name': request.form.get('name'),
        'description': request.form.get('description'),
        'category': request.form.get('category')
    }
    image_file = request.files.get('image')
    if image_file:
        filename = secure_filename(image_file.filename)
        image_file.save(
            os.path.join(current_app.config['UPLOAD_FOLDER'], filename))
        image_url = url_for('uploads', filename=filename)
        product_document['image'] = image_url
    try:
        products = get_db('products').update({ObjectId(product_id)},
                                             {"$set": product_document})
    except (Exception) as ex:
        return jsonify(status={'status': False})
    else:
        return jsonify(status={'status': True})
コード例 #4
0
def quantity_edit():
    products = get_db('products')
    product_id = request.form.get('productId')
    warehouse_id = request.form.get('warehouseId')
    product_name = request.form.get('product-name')
    warehouse_name = request.form.get('warehouse-name')
    product_price = request.form.get('product-price')
    product_quantity = request.form.get('product-quantity')
    try:
        products.update_one(
            {
                "_id": ObjectId(product_id),
                'warehouses': {
                    "$elemMatch": {
                        "_id": ObjectId(warehouse_id)
                    }
                }
            }, {
                "$set": {
                    "name": product_name,
                    'warehouses.$': {
                        '_id': ObjectId(warehouse_id),
                        'name': warehouse_name,
                        'price': product_price,
                        'quantity': product_quantity
                    }
                }
            })
    except (Exception) as ex:
        return jsonify(status={'success': False})
    else:
        return jsonify(status={'success': True})
コード例 #5
0
ファイル: store.py プロジェクト: saeedhmt/Online-Shopping
def get_single_category():
    with open('instance/categories.json', encoding='utf-8') as f:
        json_categories = json.load(f)

    db = get_db()
    products = list(db.products.find())

    categories_of_single = {}
    for group in json_categories:
        if group['subcategories']:
            for item in group['subcategories']:
                categories_of_single[item['name']] = []

    for thing in products:
        thing_category = thing['category'].split('/')[-1]
        if categories_of_single[thing_category]:
            pro_details = {
                "id": thing["_id"],
                "name": thing["name"],
                "product_category": thing_category
            }
            categories_of_single[thing_category].append(pro_details)
        else:
            categories_of_single[thing_category] = []
            pro_details = {
                "id": thing["_id"],
                "name": thing["name"],
                "product_category": thing_category
            }
            categories_of_single[thing_category].append(pro_details)

    return categories_of_single
コード例 #6
0
ファイル: admin.py プロジェクト: saeedhmt/Online-Shopping
def admin_product():
    db = get_db()
    prods = list(db.products.find())
    categories = get_categories()
    return render_template('admin/products.html',
                           products=prods,
                           categories=categories)
コード例 #7
0
ファイル: admin.py プロジェクト: saeedhmt/Online-Shopping
def admin_quantity():
    db = get_db()
    prods = list(db.products.find())
    warehouses = db.warehouses.find()
    return render_template('admin/quantities.html',
                           products=prods,
                           warehouses=warehouses)
コード例 #8
0
def order_details(order_id):
    order = get_db('orders').find_one({'_id': ObjectId(order_id)}, {'_id': 0})
    # aggregate(
    #     [
    #         {
    #             '$match': {'_id': ObjectId(order_id)}
    #         },
    #         {
    #             '$lookup': {
    #                 'from': 'products',
    #                 'localField': 'purchasedProductsId',
    #                 'foreignField': '_id',
    #                 'as': 'purchasedProductsId'
    #             }
    #         },
    #         {
    #             '$project': {
    #                 '_id': 0
    #             }
    #         }

    #     ]
    # )
    # data = order
    # data['']
    return jsonify(data=order)
コード例 #9
0
ファイル: store.py プロジェクト: saeedhmt/Online-Shopping
def order_final():
    if session["order_products"]:
        data = request.form

        purchasedProductsId = []
        for item in session["order_products"]:
            pro = get_product(item['id'])
            purchasedProductsId.append({
                "productId": ObjectId(pro["_id"]),
                "name": pro['name'],
                "warehouseName": pro['warehouse_name'],
                "count": item['number'],
                "price": {
                    "$numberDecimal": pro['price']
                }
            })

        total_price = sum([
            get_product(order['id'])['price'] * order['number']
            for order in session["order_products"]
        ])

        product_document = {
            "customerFirstName": data.get['first_name'],
            "customerLastName": data.get['last_name'],
            "customerCellPhoneNum": data.get['telephone'],
            "address": data.get['address'],
            "deliveryDate": {
                "$date": data.get['date']
            },
            "amount": {
                "$numberDecimal": total_price
            },
            "date": current_app.config['TEHRAN_TZ'].localize(datetime.now()),
            'purchasedProductsId': purchasedProductsId
        }
        try:
            get_db('orders').insert_one(product_document)
        except Exception as ex:
            return jsonify({'status': "fail", 'exception': ex})
        else:
            session.pop('order_products', None)
            return jsonify({'status': "success"})
コード例 #10
0
def ware_add():
    warehouse_name = request.form.get('name')
    try:
        warehouse_added = get_db("warehouses").insert_one(
            {'name': warehouse_name})
    except (Exception) as ex:
        return jsonify(status={'success': False})
    else:
        return jsonify(status={'success': True},
                       data={'warehouseId': warehouse_added['_id']})
コード例 #11
0
ファイル: store.py プロジェクト: saeedhmt/Online-Shopping
def get_product(product_id):
    db = get_db()
    return db.products.aggregate([{
        '$match': {
            '_id': ObjectId(product_id)
        }
    }, {
        '$unwind': {
            'path': '$warehouses',
            'preserveNullAndEmptyArrays': True
        }
    }, {
        '$match': {
            'warehouses.quantity': {
                '$gt': 0
            }
        }
    }, {
        '$sort': {
            'warehouses.price': pymongo.ASCENDING
        }
    }, {
        '$limit': 1
    }, {
        '$group': {
            '_id': '$_id',
            'name': {
                '$first': '$name'
            },
            'description': {
                '$first': '$description'
            },
            'category': {
                '$first': '$category'
            },
            'image': {
                '$first': '$image'
            },
            'warehouse_name': {
                '$first': '$warehouses.name'
            },
            'price': {
                '$first': '$warehouses.price'
            },
            'quantity': {
                '$first': '$warehouses.quantity'
            }
        }
    }])
コード例 #12
0
def quantity_list():
    products = get_db("products")
    quantities = products.aggregate([{
        '$unwind': {
            'path': '$warehouses',
            'preserveNullAndEmptyArrays': False
        }
    }, {
        '$project': {
            '_id': 0,
            'name': 1,
            'warehouses': 1
        }
    }])
    return jsonify(data=list(quantities))
コード例 #13
0
def quantity_delete():
    product_id = request.args.get('product')
    warehouse_id = request.args.get('warehouse')
    products = get_db("products")
    try:
        products.update_one(
            {"_id": ObjectId(product_id)},
            {"$pull": {
                "warehouses": {
                    "_id": ObjectId(warehouse_id)
                }
            }})
    except (Exception) as ex:
        return jsonify(status={'success': False})
    else:
        return jsonify(status={'success': True})
コード例 #14
0
def prod_upload():
    products_collection = get_db('products')
    products_file = request.files.get('file')
    products_lines = products_file.read()
    product_keys = next(products_lines)
    products = []
    for i, product_line in enumerate(products_lines):
        products.append({})
        for elem, key in zip(product_line, product_keys.split(',')):
            products[i][key] = elem
    try:
        products_collection.insert_many(products)
    except (Exception) as ex:
        return jsonify(status={'success': False})
    else:
        return jsonify(status={'success': True})
コード例 #15
0
def ware_edit():
    warehouses = get_db('warehouses')
    warehouse_id = request.form.get('warehouseId')
    warehouse_name = request.form.get('name')
    # if warehouse_id := request.form.get('warehouseId'):
    #     warehouse = warehouses.find({"_id": ObjectId(warehouse_id)})
    #     return jsonify(data=warehouse)
    # else:
    try:
        warehouses.update_one({"_id": ObjectId(warehouse_id)},
                              {"$set": {
                                  "name": warehouse_name
                              }})
    except (Exception) as ex:
        return jsonify(status={'success': False})
    else:
        return jsonify(status={'success': True})
コード例 #16
0
ファイル: store.py プロジェクト: saeedhmt/Online-Shopping
def get_products_by_category(cat):
    db = get_db()
    return db.products.aggregate([{
        '$unwind': {
            'path': '$warehouses',
            'preserveNullAndEmptyArrays': True
        }
    }, {
        '$match': {
            'warehouses.quantity': {
                '$gt': 0
            },
            'category': {
                '$regex': cat
            }
        }
    }, {
        '$group': {
            '_id': '$_id',
            'name': {
                '$first': '$name'
            },
            'price': {
                '$min': '$warehouses.price'
            },
            'category': {
                '$first': '$category'
            },
            'description': {
                '$first': '$description'
            },
            'image': {
                '$first': '$image'
            },
            'date': {
                '$first': '$date'
            }
        }
    }, {
        '$sort': {
            'date': pymongo.DESCENDING
        }
    }])
コード例 #17
0
def quantity_add():
    products = get_db('products')
    # product_id = request.form.get('productId')
    warehouse_name = request.form.get('warehouseName')
    product_name = request.form.get('productName')
    # warehouse_id = request.form.get('warehouse-id')
    product_price = request.form.get('price')
    product_quantity = request.form.get('quantity')
    try:
        products.update_one({"_id": ObjectId(product_id)}, {
            "$push": {
                'warehouses': {
                    '_id': ObjectId(warehouse_id),
                    'name': warehouse_name,
                    'price': product_price,
                    'quantity': product_quantity
                }
            }
        })
    except (Exception) as ex:
        return jsonify(status={'success': False})
    else:
        return jsonify(status={'success': True})
コード例 #18
0
def prod_add():
    image_file = request.files.get('image')
    if image_file:
        filename = secure_filename(image_file.filename)
        image_file.save(
            os.path.join(current_app.config['UPLOAD_FOLDER'], filename))
        image_url = url_for('uploads', filename=filename)
    else:
        image_url = url_for('uploads', filename='default_product_image.jpg')

    product_document = {
        'name': request.form.get('name'),
        'description': request.form.get('description'),
        'category': request.form.get('category'),
        'date': current_app.config['TEHRAN_TZ'].localize(datetime.now()),
        'image': image_url
    }
    try:
        product_added = get_db('products').insert_one(product_document)
    except (Exception) as ex:
        return jsonify(status={'status': False})
    else:
        return jsonify(status={'status': True},
                       data={'productId': product_added['_id']})
コード例 #19
0
ファイル: admin.py プロジェクト: saeedhmt/Online-Shopping
def admin_orders():
    """get somethings from database """
    orders = get_db().orders.find()
    return render_template("admin/orders.html", orders=orders)
コード例 #20
0
ファイル: admin.py プロジェクト: saeedhmt/Online-Shopping
def admin_warehouse():
    db = get_db()
    warehouses = db.warehouses.find()
    return render_template('admin/warehouses.html', warehouses=warehouses)
コード例 #21
0
def prod_list():
    products = list(get_db('products').find())
    return jsonify(data=products)
コード例 #22
0
def prod_details(product_id):
    product = get_db('products').find_one({'_id': ObjectId(product_id)})
    return jsonify(data=product)
コード例 #23
0
def order_list():
    orders = list(get_db('orders').find())
    return jsonify(orders)
コード例 #24
0
def ware_list():
    warehouses = list(get_db('warehouses').find())
    return jsonify(data=warehouses)