def utility(): STATUS_CREATE = "create" STATUS_CHECK = "check" if not check_bronze_kyc_level(): return redirect(url_for('kyc_incomplete')) utility_id = int(request.args.get("utility")) utility = Utility.from_id(db.session, utility_id) Utility.jsonify_bank_descriptions([utility]) if request.method == "POST": bank_index = int(request.form.get("zbp_bank_index")) bank_desc = utility.bank_description_json[bank_index] status = request.form.get("zbp_state") email = request.form.get("zbp_email") amount = request.form.get("zbp_amount") utility_name = request.form.get("zbp_utility_name") values = request.form error = None if status == STATUS_CREATE: error = validate_email(email) if not error: error = validate_amount(amount) if not error: error = validate_values(bank_desc, values) if not error: status = STATUS_CHECK elif status == STATUS_CHECK: error = validate_email(email) if not error: error = validate_amount(amount) if not error: error = validate_values(bank_desc, values) if not error: details = bank_transaction_details(bank_desc, values) invoice, err = invoice_create(utility, details, email, amount, utility_name) if invoice: return redirect(url_for("invoice", token=invoice.token)) else: error = "failed to create invoice ({})".format(err) return render_template("utility.html", utility=utility, selected_bank_name=bank_desc["name"], status=status, email=email, amount=amount, utility_name=utility_name, values=values, error=error) else: return render_template("utility.html", utility=utility, status=STATUS_CREATE, values=werkzeug.MultiDict())
def register_new_utility(): """ Register_new_utility. """ if request.method == 'POST': utility_id = request.json['utility_id'] utility = Utility().get(utility_id) utility.approval_count += 1 if utility.approval_count >= 10: utility.registered = True utility.save()
def get_all_utilities(): """ Returns all the utilities and renders them in utility template. """ utilities = Utility().all() context = {} context['utilities'] = utilities return render_template('utilities.html', **context)
def add_utility(): """Upload a utility """ lat = request.form.get('lat') if lat == None: return jsonify('lat parameter is required'), 400 try: lat = float(lat) except ValueError: return jsonify('lat needs to be double'), 400 lon = request.form.get('lon') if lon == None: return jsonify('lon parameter is required'), 400 try: lat = float(lat) except ValueError: return jsonify('lon needs to be double'), 400 description = request.form.get('description') if description == None: return jsonify('description parameter is required'), 400 file = request.files.get('image') if file == None: return jsonify('image parameter is required'), 400 # Upload image to GCP id = str(uuid.uuid4()) upload_to_gcp(id, file) u = Utility( id=id, type=0, lat=lat, lon=lon, description=description, ) db.session.add(u) db.session.commit() return jsonify(u.to_json()), 200
def get_user_owned_utility(): """ Returns User owned Utilities """ user_id = flask_session.get('user_id') utilities = Utility().get_user_utility(user_id) context = dict( utilities=utilities ) return render_template('owned_utilities.html', **context)
def utility_item(utility_id): """ Renders template to add new utility item. :param utility_id: id for the requested utility. :param type: int """ utility = Utility().get(utility_id) context = {} context['utility'] = utility return render_template('add_utility_item.html', **context)
def add_new_utility(): """ Adds a new utility to Xena's db. """ user_id = flask_session.get('user_id') if request.method == 'POST': data = request.form new_utility = Utility( name=data['name'], description=data['description'], image=data['image'], user_utility_id=user_id, address=data['address'] ) new_utility.create() return redirect( url_for( 'get_all_utilities' ) )
def get_utility(utility_id): """ Returns data for a selected utility. :param utility_id: Id for the requested utility. :param type: int """ utility = Utility().get(utility_id) context = dict( utility=utility ) return render_template('show_utility.html', **context)
def get_unregistered_tran(): """ Returns all the unregistered transactions to send for mining. """ transactions = UtilityItemUser().get_unregistered_transactions() transactions_dict = {} i = 0 for transaction in transactions: i += 1 trans = {} trans['sender_id'] = transaction.user_id trans['transaction_id'] = transaction.id reciever_id = Utility().get_owner(transaction.utility_id) amount = UtilityItem().get_price(transaction.utility_item_id) trans['amount'] = amount trans['reciever'] = reciever_id transactions_dict['trans' + str(i)] = trans return jsonify(transactions_dict)
def main(username): if current_user.is_authenticated: # If a user is logged in from a past session but has no record in our # database (was deleted), we log them out and consider them anonymous try: assert current_user.id except AssertionError: logout_user() else: current_user.update_usage() user = None key = username if redis.get("Q:" + username) else "" if not key: # note: 'current_user' is the user that is currently logged in. # 'user' is the user we are displaying data for. user = Users.get(username) if not user: flash("user '{}' is not registered with this app".format(username)) return redirect(url_for('splash')) date1 = request.args.get("date1") or request.args.get("after", "") date2 = request.args.get("date2") or request.args.get("before", "") preset = request.args.get("preset", "") limit = request.args.get("limit", "") baselayer = request.args.getlist("baselayer") ids = request.args.get("id", "") group = "multi" if key else request.args.get("group", "") if not ids: if (not date1) and (not date2): if preset: try: preset = int(preset) except ValueError: flash("'{}' is not a valid preset".format(preset)) preset = 7 elif limit: try: limit = int(limit) except ValueError: flash("'{}' is not a valid limit".format(limit)) limit = 1 elif group: pass else: limit = 10 c1 = request.args.get("c1", "") c2 = request.args.get("c2", "") sz = request.args.get("sz", "") lat = request.args.get("lat") lng = request.args.get("lng") zoom = request.args.get("zoom") autozoom = request.args.get("autozoom") in ["1", "true"] if (not lat) or (not lng): lat, lng = app.config["MAP_CENTER"] zoom = app.config["MAP_ZOOM"] autozoom = "1" if current_user.is_anonymous or (not current_user.is_admin()): event = { "ip": request.access_route[-1], "agent": vars(request.user_agent), "msg": Utility.href(request.url, request.full_path) } if not current_user.is_anonymous: event.update({ "profile": current_user.profile, "cuid": current_user.id }) EventLogger.new_event(**event) paused = request.args.get("paused") in ["1", "true"] return render_template('main.html', user=user, lat=lat, lng=lng, zoom=zoom, ids=ids, group=group, key=key, preset=preset, date1=date1, date2=date2, limit=limit, autozoom=autozoom, paused=paused, baselayer=baselayer, c1=c1, c2=c2, sz=sz)
'Central AC': [2023, 'Heating and Cooling'], 'Range Oven': [2795, 'Kitchen'], 'Dishwasher': [1172, 'Kitchen'], 'Refrigerator': [366, 'Kitchen'] } for name in supplemental_appl.keys(): appliance = Appliance(name=name, watts=supplemental_appl[name][0], category=supplemental_appl[name][1]) cleaned_appliances.append(appliance) #Clean utility rate data from US utility_rates = [] for val in wsheet_util.iter_rows(min_row=5, max_row=66, values_only=True): rate = Utility(location=val[0], rate=val[1]) utility_rates.append(rate) #Clean utility rate data from Canada canada_list = [td.get_text() for td in canadian_util_rate_html.find_all('td')] #strip '¢/kWh' from rates canada_list_cleaned = [rate.strip('¢/kWh') for rate in canada_list] #append Utility instances to utility_rates for val in range(0, len(canada_list_cleaned), 2): rate = Utility(location=canada_list_cleaned[val], rate=canada_list_cleaned[val + 1]) utility_rates.append(rate) #add cell phone and tablet appliances cell_phone = Appliance(name="Cell Phone Charger",
def utilities(): if not check_bronze_kyc_level(): return redirect(url_for('kyc_incomplete')) utilities = Utility.all_alphabetical(db.session) return render_template('utilities.html', utilities=utilities)