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'))
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'))
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'))
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'))
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'))
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')
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))
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'))