Beispiel #1
0
def add_manager():
    print(check_logged_in(1))
    if check_logged_in(1):
        form = RegisterWorker(request.form)
        if request.method == 'POST' and form.validate():
            username = form.name.data
            emailID = form.email.data
            password = form.password.data
            role = 2
            error = None

            if not username:
                error = 'Username is required.'
            elif not password:
                error = 'Password is required.'
            elif User.query.filter_by(emailID=emailID).first() is not None:
                error = 'User {} is already registered.'.format(username)
            if error is None:
                temp = User(username, emailID,
                            generate_password_hash(password), role)
                db.session.add(temp)
                db.session.commit()
                db.session.add(employeeInfo(temp.id, int(session['user_id'])))
                db.session.commit()
                return redirect(url_for('owner.index'))

        return render_template('owner/add_employee.html',
                               form=form,
                               title="Add Manager Page",
                               role=str(session['role']))
    return redirect(url_for('landing.index'))
def update_selling_price():
    if check_logged_in(2) and 'id' in request.args:

        nID = nurseryStaff.query.filter_by(eID=session['user_id']).first()
        if nID != None:
            nID = nID.nID

            plantTypeID = int(request.args.get('id'))
            if request.method == 'POST':
                plantType = plantTypeInfo.query.filter_by(
                    plantTypeID=plantTypeID).first()
                sellingPrice = decimal.Decimal(
                    request.form.get('sellingPrice'))

                plantType.sellingPrice = sellingPrice
                # Make it available
                is_available = plantTypesAvailable.query.filter_by(
                    plantTypeID=plantType.plantTypeID).first()
                if not is_available:
                    db.session.add(
                        plantTypesAvailable(plantType.plantTypeID, nID))
                db.session.commit()
                return redirect(url_for('manager.view_plants'))
            IMG_PATH = get_stats_for_selling_price(plantTypeID)
            return render_template('manager/update_selling_price.html',
                                   plantTypeID=plantTypeID,
                                   role=str(session['role']),
                                   IMG_PATH=IMG_PATH)

    return redirect(url_for('landing.index'))
Beispiel #3
0
def view_plants_assigned():
    if check_logged_in(3):
        plants_list = get_plants_assigned(session['user_id'])
        return render_template('gardener/view_plants_assigned.html',
                               role=str(session['role']),
                               plants_list=plants_list)
    return redirect(url_for('landing.index'))
Beispiel #4
0
def view_cart():
    if check_logged_in(0):
        items = get_cart_items(session['user_id'])
        return render_template('customer/view_cart.html',
                               role=str(session['role']),
                               items=items)
    return redirect(url_for('landing.index'))
Beispiel #5
0
def add_nursery():
    if check_logged_in(1):
        form = registerNurseryForm(request.form)
        if request.method == 'POST' and form.validate():

            pincode = form.pincode.data
            city = form.city.data
            country = form.country.data
            labour = form.labour.data
            maintenance = form.maintenance.data
            if pincode != None or city != None or country != None or labour != None or maintenance != None:
                temp = nurseryInfo(ownerID=int(session['user_id']),
                                   maintenanceCost=maintenance,
                                   labourCost=labour)
                db.session.add(temp)
                db.session.commit()
                db.session.add(
                    nurseryAddress(nID=temp.nID,
                                   pincode=pincode,
                                   city=city,
                                   country=country))
                db.session.commit()
            return redirect(url_for('owner.view_nurseries'))

        return render_template('owner/add_nursery.html',
                               role=str(session['role']),
                               form=form)
    return redirect(url_for('landing.index'))
Beispiel #6
0
def change_status():
    if check_logged_in(3):
        nID = nurseryStaff.query.filter_by(eID=session['user_id']).first().nID
        pID = request.args.get('id', default='')
        status = request.args.get('status', default='')

        possible_status = [
            'growing', 'grown', 'sold', 'dead', 'needs_attention'
        ]
        if pID != '' and status in possible_status:
            plant = plantInfo.query.filter_by(pID=int(pID)).first()
            if status == 'growing':
                plant.plantStatus = plantStatus.GROWING
            elif status == 'grown':
                try:
                    db.session.add(plantsAvailable(plant.pID, nID))
                    db.session.commit()
                except:
                    pass
                plant.plantStatus = plantStatus.GROWN
            elif status == 'sold':
                plant.plantStatus = plantStatus.SOLD
            elif status == 'dead':
                plant.plantStatus = plantStatus.DEAD
            elif status == 'needs_attention':
                plant.plantStatus = plantStatus.NEEDS_ATTENTION
            db.session.commit()
        return redirect(url_for('gardener.view_plants_assigned'))
    return redirect(url_for('landing.index'))
Beispiel #7
0
def view_stats():
    if check_logged_in(1):
        img_sales_stats = get_stats_for_sales(session['user_id'])
        return render_template('owner/stats.html',
                               role=str(session['role']),
                               img_sales_stats=img_sales_stats)
    return redirect('landing.index')
Beispiel #8
0
def view_stats():
    if check_logged_in(3):
        img_status_comparison = get_stats_for_status_comparison(
            session['user_id'])
        return render_template('gardener/stats.html',
                               role=str(session['role']),
                               img_status_comparison=img_status_comparison)
    return redirect(url_for('landing.index'))
Beispiel #9
0
def index():
    if (check_logged_in(0)):
        plants_list = get_plants_available()

        return render_template('landing/index.html',
                               role=str(session['role']),
                               plants_list=plants_list)
    return redirect(url_for('landing.index'))
Beispiel #10
0
def view_order_history():
    if (check_logged_in(0)):
        orders = get_order_history(session['user_id'])
        return render_template('customer/view_order_history.html',
                               role=str(session['role']),
                               userID=session['user_id'],
                               orders=orders)
    return redirect(url_for('landing.index'))
Beispiel #11
0
def view_nurseries():
    if (check_logged_in(1)):
        return render_template('owner/view_nursery.html',
                               role=str(session['role']),
                               nursery_list=get_nurser_list(
                                   session['user_id']))

    return redirect(url_for('landing.index'))
Beispiel #12
0
def index():
    if check_logged_in(session['role']):
        IMG_PATH = get_stats_for_maintenance_cost(session['user_id'])
        return render_template('landing/index.html',
                               role=str(session['role']),
                               maintenance_img=IMG_PATH)
    else:
        return redirect(url_for('landing.index'))
Beispiel #13
0
def remove_manager(id):
    if check_logged_in(1):
        if check_manager_assigned(id):
            db.session.delete(
                nurseryStaff.query.filter_by(nID=id,
                                             eID=get_manager_id(id)).first())
            db.session.commit()
            return redirect(url_for('owner.view_nurseries'))
    return redirect(url_for('landing.index'))
Beispiel #14
0
def view_plant_type_profile():
    if check_logged_in(3) and 'plantTypeID' in request.args:

        plantTypeID = request.args.get('plantTypeID')
        description = get_complete_plant_info(plantTypeID)
        return render_template('gardener/view_plant_type_profile.html',
                               role=str(session['role']),
                               description=description)
    return redirect(url_for('landing.index'))
Beispiel #15
0
def update_cost_to_raise():
    if check_logged_in(
            3) and 'reason' in request.form and 'cost' in request.form:
        pID = int(request.form.get('id'))
        reason = request.form.get('reason')
        cost = decimal.Decimal(request.form.get('cost'))

        plant = costToRaise.query.filter_by(pID=pID).first()
        plant.cost += cost
        db.session.commit()
        return redirect(url_for('gardener.view_plants_assigned'))
    return redirect(url_for('landing.index'))
Beispiel #16
0
def view_plant_profile():
    if check_logged_in(3):
        pID = request.args.get('pID', default='')
        print(pID)
        if pID != '':
            pID = int(pID)
            description = get_plant_profile(pID)
            if description['gardenerID'] == session['user_id']:
                return render_template('gardener/view_plant_profile.html',
                                       description=description,
                                       role=str(session['role']))
    return redirect(url_for('landing.index'))
Beispiel #17
0
def remove_from_cart():
    if check_logged_in(0) and 'id' in request.form:
        pID = int(request.form.get('id'))
        cart_item = cart.query.filter_by(customerID=session['user_id'],
                                         pID=pID).first()
        nID = get_nursery_for_plant(pID)

        db.session.delete(cart_item)
        db.session.add(plantsAvailable(pID, nID))
        db.session.commit()

        return redirect(url_for('customer.view_cart'))
    return redirect(url_for('landing.index'))
Beispiel #18
0
def file_complaint():
    if check_logged_in(0):
        userID = session['user_id']
        nID = int(request.form.get('nID'))
        pID = int(request.form.get('id'))
        description = request.form.get('description')

        if complaints.query.filter_by(
                pID=pID).first() == None or complaints.query.filter_by(
                    pID=pID).first().complaintStatus == 1:
            db.session.add(complaints(userID, pID, nID, description))
            db.session.commit()
        return redirect(url_for('customer.view_order_history'))
    return redirect(url_for('landing.index'))
def view_nurseries():
    if (check_logged_in(1)):

        PinCode = request.args.get('pin', default='')
        City = request.args.get('city', default='')
        Country = request.args.get('country', default='')
        nursery_list = get_nurser_list(session['user_id'], PinCode, City,
                                       Country)
        if nursery_list == []:
            nursery_list.append(('', '', '', '', '', ''))
        return render_template('owner/view_nursery.html',
                               role=str(session['role']),
                               nursery_list=nursery_list)
    return redirect(url_for('landing.index'))
Beispiel #20
0
def view_plant_profile():
    if check_logged_in(0):
        if request.method == 'POST' and 'id' in request.form:
            plantTypeID = int(request.form.get('id'))
            description = get_complete_plant_info(plantTypeID)

            if description['quantity'] == 0:
                return redirect(url_for('customer.view_plant_profile'))


            plant                       = plantTypeInfo.query.filter_by(plantTypeID=plantTypeID)\
                                            .join(plantInfo, plantTypeInfo.plantTypeID==plantInfo.plantTypeID)\
                                                .add_columns(plantInfo.pID, plantInfo.plantStatus)\
                                                    .join(plantsAvailable, plantsAvailable.pID == plantInfo.pID).first()

            plantAvailableColumn = plantsAvailable.query.filter_by(
                pID=plant.pID).first()
            nID = description['nID']
            sellingPrice = description['sellingPrice']

            if 'purchase' in request.form:

                transaction = transactionInfo(session['user_id'])

                db.session.add(transaction)
                db.session.commit()

                db.session.add(
                    plantsSold(transaction.transactionID, plant.pID, nID,
                               sellingPrice))
                plant = plantInfo.query.filter_by(pID=plant.pID).first()
                plant.plantStatus = plantStatus.SOLD
                db.session.delete(plantAvailableColumn)
                db.session.commit()

            if 'add_to_cart' in request.form:

                db.session.add(cart(session['user_id'], plant.pID))
                db.session.delete(plantAvailableColumn)
                db.session.commit()

        if 'plantTypeID' in request.args:
            plantTypeID = request.args.get('plantTypeID')
            description = get_complete_plant_info(plantTypeID)
            return render_template('customer/view_plant_profile.html',
                                   role=str(session['role']),
                                   description=description)
    return redirect(url_for('landing.index'))
def view_gardeners():
    if check_logged_in(2):
        nID = nurseryStaff.query.filter_by(eID=session['user_id']).first()
        if nID != None:
            nID = nID.nID
            gardener_list = get_gardeners(nID)

            if gardener_list == []:
                gardener_list = [
                    ('', '', ''),
                ]
            return render_template("manager/view_gardeners.html",
                                   role=str(session['role']),
                                   employee_list=gardener_list)
        return render_template('manager/not_assigned.html',
                               role=str(session['role']))
    return redirect(url_for('landing.index'))
Beispiel #22
0
def view_plant_types():
    if check_logged_in(3):
        nID = nurseryStaff.query.filter_by(eID=session['user_id']).first().nID
        plant_type_list = plantTypeInfo.query.filter_by(nID=nID).all()
        plant_description_list = []
        for plant in plant_type_list:
            plant_description = get_complete_plant_description(
                plant.plantTypeID)
            plant_description['seeds_list'] = get_seeds_to_sow(
                plant.plantTypeID)
            plant_description_list.append(plant_description)

        return render_template('gardener/view_plant_types.html',
                               role=str(session['role']),
                               plant_type_list=plant_description_list)

    return redirect(url_for('landing.index'))
Beispiel #23
0
def checkout_cart():
    if check_logged_in(0):
        items = get_cart_items(session['user_id'])

        for item in items:
            cart_item = cart.query.filter_by(customerID=session['user_id'],
                                             pID=item['id']).first()
            transaction = transactionInfo(session['user_id'])

            db.session.add(transaction)
            db.session.delete(cart_item)
            db.session.commit()

            plant = plantInfo.query.filter_by(pID=item['id']).first()
            db.session.add(
                plantsSold(transaction.transactionID, item['id'], item['nID'],
                           item['sellingPrice']))
            plant.plantStatus = plantStatus.SOLD
            db.session.commit()

    return redirect(url_for('landing.index'))
Beispiel #24
0
def sow_seeds():
    if check_logged_in(3) and 'checkbox' in request.form:
        data = request.form.getlist('checkbox')

        for batch in data:
            seedBatchID = int(batch.split('_')[0])
            plantTypeID = int(batch.split('_')[1])

            quantity = request.form["quantity" + str(seedBatchID)]
            if quantity != '':
                quantity = int(quantity)
                # Check if quantity <= availability
                seedBatch = seedAvailable.query.filter_by(
                    seedBatchID=seedBatchID).first()
                if quantity <= seedBatch.quantity:
                    # Update seed available
                    seedBatch.quantity -= quantity

                    seedBatchInfoObject = seedBatchInfo.query.filter_by(
                        seedBatchID=seedBatchID).first()
                    for i in range(0, quantity):
                        plant = plantInfo(
                            plantTypeID, seedBatchID,
                            seedTypeInfo.query.filter_by(
                                seedTypeID=seedBatchInfoObject.seedTypeID).
                            first().plantColor, plantStatus.GROWING)
                        db.session.add(plant)
                        db.session.commit()
                        # Add value to cost to raise
                        db.session.add(
                            costToRaise(plant.pID,
                                        (seedBatchInfoObject.batchCost) /
                                        1000))

                        # Update gardener of plant
                        gardener = gardenerOfPlant(plant.pID,
                                                   session['user_id'])
                        db.session.add(gardener)
                        db.session.commit()
    return redirect(url_for('landing.index'))
def add_vendor():
    if check_logged_in(2):
        nID = nurseryStaff.query.filter_by(eID=session['user_id']).first()
        if nID != None:
            nID = nID.nID
            if request.method == 'POST':
                plants_sold_id = request.form.getlist('checkbox')

                vendor = vendorInfo(request.form['name'], nID)
                db.session.add(vendor)
                db.session.commit()
                for plant_id in plants_sold_id:
                    cost = request.form[plant_id]
                    if cost != '':
                        cost = int(cost)

                        seed_type = seedTypeInfo(int(plant_id))
                        db.session.add(seed_type)
                        db.session.commit()

                        db.session.add(
                            vendorSeedInfo(seed_type.seedTypeID,
                                           vendor.vendorID, cost))
                        db.session.commit()

                return redirect(url_for('landing.index'))

            plant_type_list = plantTypeInfo.query.filter_by(nID=nID).all()
            plant_description_list = []
            for plant in plant_type_list:
                plant_description = get_complete_plant_description(
                    plant.plantTypeID)
                plant_description_list.append(plant_description)
            return render_template('manager/add_vendor.html',
                                   role=str(session['role']),
                                   plant_type_list=plant_description_list)
        return render_template('manager/not_assigned.html',
                               role=str(session['role']))
    return redirect(url_for('landing.index'))
def view_plants():
    if check_logged_in(2):
        nID = nurseryStaff.query.filter_by(eID=session['user_id']).first()

        if nID != None:
            nID = nID.nID
            plant_type_list = plantTypeInfo.query.filter_by(nID=nID).all()
            plant_description_list = []
            for plant in plant_type_list:
                plant_description = get_complete_plant_description(
                    plant.plantTypeID)
                plant_description['vendors_list'] = get_vendors(
                    plant.plantTypeID, nID)
                plant_description_list.append(plant_description)
            return render_template('manager/view_plants.html',
                                   role=str(session['role']),
                                   plant_type_list=plant_description_list)

        return render_template('manager/not_assigned.html',
                               role=str(session['role']))

    return redirect(url_for('landing.index'))
def add_gardener():
    if check_logged_in(2):

        nID = nurseryStaff.query.filter_by(eID=session['user_id']).first()
        if nID != None:
            nID = nID.nID

        form = AddGardenerForm(request.form)
        if request.method == 'POST' and nID != None:
            username = form.name.data
            emailID = form.email.data
            password = form.password.data
            role = 3
            error = None

            if not username:
                error = 'Username is required.'
            elif not password:
                error = 'Password is required.'
            elif User.query.filter_by(emailID=emailID).first() is not None:
                error = 'User {} is already registered.'.format(username)
            if error is None:
                temp = User(username, emailID,
                            generate_password_hash(password), role)
                db.session.add(temp)
                db.session.commit()
                db.session.add(employeeInfo(temp.id, int(session['user_id'])))
                db.session.add(nurseryStaff(nID, temp.id))
                db.session.commit()
            return redirect(url_for('manager.index'))
        if nID != None:
            return render_template('manager/add_gardener.html',
                                   form=form,
                                   role=str(session['role']),
                                   assigned='True')
        return render_template('manager/not_assigned.html',
                               role=str(session['role']))
    return redirect(url_for('landing.index'))
Beispiel #28
0
def view_employees():
    if check_logged_in(1):

        designation = request.args.get('role', default='')
        order = request.args.get('order', default='')
        status = request.args.get('status', default='')

        employee_list = get_employee_list(session['user_id'], status)

        temp = []
        if designation != '' and escape(
                designation.lower()) in ['gardener', 'manager']:
            for e in employee_list:
                if e[2].lower() == escape(designation.lower()):
                    temp.append(e)
            employee_list = temp

        if employee_list == []:
            employee_list.append(('', '', ''))

        # Filter for ascending order
        if order == 'asc':
            return render_template('owner/view_employee.html',
                                   role=str(session['role']),
                                   employee_list=sorted(employee_list,
                                                        key=lambda x: x[0]))
        # Filter for descending order
        if order == 'desc':
            return render_template(
                'owner/view_employee.html',
                role=str(session['role']),
                employee_list=sorted(employee_list, key=lambda x: x[0])[::-1])

        return render_template('owner/view_employee.html',
                               role=str(session['role']),
                               employee_list=employee_list)
    return redirect(url_for('landing.index'))
Beispiel #29
0
def assign_manager(id):
    if check_logged_in(1):
        if request.method == 'POST':

            managerEmailID = request.form['assign_manager']
            nID = id
            managerID = User.query.filter_by(emailID=managerEmailID).first().id
            db.session.add(nurseryStaff(nID, managerID))
            db.session.commit()
            return redirect(url_for('owner.view_nurseries'))

        # IF GET request, render page for assigning manager
        # Checks if manager is not already assigned
        if check_manager_assigned(id):
            return render_template('owner/assign_manager.html',
                                   role=str(session['role']),
                                   assigned='True')

        employee_list = get_employee_list(session['user_id'])
        designation = 'manager'

        temp = []
        for e in employee_list:
            if e[2].lower() == escape(
                    designation.lower()) and nurseryStaff.query.filter_by(
                        eID=User.query.filter_by(
                            emailID=e[1]).first().id).first() == None:
                temp.append(e)
        employee_list = temp
        if employee_list == []:
            employee_list.append(('', '', ''))
        return render_template('owner/assign_manager.html',
                               role=str(session['role']),
                               employee_list=employee_list,
                               id=id)
    return redirect(url_for('landing.index'))
def buy_seeds():
    if check_logged_in(2):
        nID = nurseryStaff.query.filter_by(eID=session['user_id']).first()
        if nID != None:
            nID = nID.nID
            if request.method == 'POST' and 'checkbox' in request.form:
                data = request.form.getlist('checkbox')

                for vendor in data:
                    vendorID = int(vendor.split('_')[0])
                    plantTypeID = int(vendor.split('_')[1])

                    quantity = request.form["quantity" + str(vendorID)]
                    if quantity != '':
                        quantity = int(quantity)
                        seedTypes = seedTypeInfo.query.filter_by(
                            plantTypeID=plantTypeID).all()
                        for seedType in seedTypes:
                            if vendorSeedInfo.query.filter_by(
                                    vendorID=vendorID,
                                    seedTypeID=seedType.seedTypeID).first(
                                    ) != None:
                                seedBatch = seedBatchInfo(seedType.seedTypeID, quantity, quantity*vendorSeedInfo.query\
                                    .filter_by(vendorID=vendorID, seedTypeID=seedType.seedTypeID).first().seedCost)
                                db.session.add(seedBatch)
                                db.session.commit()

                                db.session.add(
                                    seedAvailable(seedBatch.seedBatchID, nID,
                                                  quantity))
                                db.session.commit()

                return redirect(url_for('landing.index'))
        return render_template('manager/not_assigned.html',
                               role=str(session['role']))
    return redirect(url_for('landing.index'))