def _upload_template(): if request.method == 'POST' and 'template' in request.files: file = request.files['template'] filename = secure_filename(file.filename) dst_dir = current_app.config['UPLOADED_TEMPLATES_DEST'] base_tpl_name = filename[:-4] versions = [] for dirname in os.listdir(dst_dir): dirpath = os.path.join(dst_dir, dirname) if os.path.isdir(dirpath) and base_tpl_name + '_v' in dirname: versions.append(int(dirname.split('_v')[-1].strip())) if versions: max_version = max(versions) else: max_version = 0 tpl_name = '{}_v{}'.format(base_tpl_name, max_version + 1) zf = zipfile.ZipFile(file.stream) # load template result = upload_template(g.conn, zf, tpl_name) flash('Template %s uploaded successfully' % tpl_name, category='info') else: flash('Something went wrong.') return redirect(url_for('manager.manage_templates'))
def import_hydra_network(): if request.method == 'POST': try: file = request.files['file[0]'] filename = secure_filename(file.filename) error = 0 except: error = 1 return jsonify(error=error) redirect(url_for('home.main'))
def import_weap_area(): file = request.files['file[0]'] filename = secure_filename(file.filename) template_id = get_templates(g.conn, current_app.config['DEFAULT_HYDRA_TEMPLATE'])[0].id lookup_path = 'OpenAgua' + url_for('.static', filename='other/WEAP_OpenAgua_Lookup.csv') with zipfile.ZipFile(file.stream) as weapzipfile: area = load_weap_area(weapzipfile) network = weap_to_network(g.conn, filename, weapzipfile, area, session['project_id'], template_id, lookup_path) study = add_study(session['hydra_userid'], session['project_id']) error = 0 return jsonify(error=0)
def user_profile(): if "email" in session: if request.method == "POST": if not request.files["file"].filename == "": file = request.files["file"] if file.content_type == "image/jpeg": filename = secure_filename(file.filename) file.save( os.path.join(app.config["UPLOAD_FOLDER"], filename)) files = [ ('avatar', (f'{filename}', open(f'{app.config["UPLOAD_FOLDER"]}/{filename}', 'rb'), 'image/jpeg')) ] payload = {} access_token = session["access_token"] image = requests.request( "PUT", f"{URL}/users/avatar", headers={"Authorization": f"Bearer {access_token}"}, data=payload, files=files) if image.status_code == 200: flash("Successfully updated avatar", category="success") session["avatar"] = image.json()["avatar_url"] else: flash("Something went wrong. Please try again", category="error") del files, image file = os.path.join("./website", str(filename)) os.remove(file) return redirect(url_for("views.user_profile")) else: flash("Only accepting JPEG images", category="error") return redirect(url_for(f"views.recipes")) return render_template("user_profile.html", user=session) return redirect("auth.login")
def upload_file(): if request.method == 'POST': if 'file' not in request.files: flash('No file part') return redirect(request.url) file = request.files['file'] if file.filename == '': flash('No selected file') return redirect(request.url) if file and allowed_file(file.filename): filename = u.secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) return redirect(url_for('all_files')) return render_template('upload.html')
def create_recipe(): if "email" in session: if request.method == "POST": name = request.form.get("name") description = request.form.get("description") num_of_servings = request.form.get("num_of_servings") ingredients = request.form.get("ingredients") cook_time = request.form.get("cook_time") directions = request.form.get("directions") if name and description and num_of_servings and ingredients and cook_time and directions: if len(name) <= 3: flash("Please enter a longer name", category="error") elif len(description) <= 5: flash("Please enter a longer description", category="error") else: params = { "name": f"{name}", "description": f"{description}", "num_of_servings": int(num_of_servings), "ingredients": f"{ingredients}", "cook_time": int(cook_time), "directions": f"{directions}" } access_token = session["access_token"] reply = requests.post(f"{URL}/recipes", json=params, headers={ "Content-Type": "application/json", "Authorization": f"Bearer {access_token}" }) if reply.status_code == 201: id = reply.json()["id"] if not request.files["file"].filename == "": file = request.files["file"] if file.content_type == "image/jpeg": filename = secure_filename(file.filename) file.save( os.path.join(app.config["UPLOAD_FOLDER"], filename)) files = [('cover', ( f'{filename}', open( f'{app.config["UPLOAD_FOLDER"]}/{filename}', 'rb'), 'image/jpeg'))] payload = {} image = requests.request( "PUT", f"{URL}/recipes/{id}/cover", headers={ "Authorization": f"Bearer {access_token}" }, data=payload, files=files) del files, image file = os.path.join("./website", str(filename)) os.remove(file) else: flash("Only accepting JPEG images", category="error") return redirect(url_for("views.create_recipe")) publish = requests.put(f"{URL}/recipes/{id}/publish", headers={ "Content-Type": "application/json", "Authorization": f"Bearer {access_token}" }) flash("Successfully created a new recipe", category="success") elif reply.status_code == 400: flash("One or more or the entered values are invalid", category="error") else: flash("Something went wrong. Please try again", category="error") return redirect(url_for("views.recipes")) return render_template("create_recipe.html", user=session)
def edit_recipe(): if "email" in session: try: id = request.args.get("id") reply = requests.get(f"{URL}/recipes/{id}") author = reply.json()["author"]["username"] name = reply.json()["name"] description = reply.json()["description"] num_of_servings = reply.json()["num_of_servings"] ingredients = reply.json()["ingredients"] cook_time = reply.json()["cook_time"] directions = reply.json()["directions"] if author == session["username"]: if request.method == "POST": data = request.form name = data["name"] description = data["description"] num_of_servings = data["num_of_servings"] ingredients = data["ingredients"] cook_time = data["cook_time"] directions = data["directions"] params = { "name": f"{name}", "description": f"{description}", "num_of_servings": int(num_of_servings), "ingredients": f"{ingredients}", "cook_time": int(cook_time), "directions": f"{directions}" } access_token = session["access_token"] if not request.files["file"].filename == "": file = request.files["file"] if file.content_type == "image/jpeg": filename = secure_filename(file.filename) file.save( os.path.join(app.config["UPLOAD_FOLDER"], filename)) files = [('cover', ( f'{filename}', open( f'{app.config["UPLOAD_FOLDER"]}/{filename}', 'rb'), 'image/jpeg'))] payload = {} image = requests.request( "PUT", f"{URL}/recipes/{id}/cover", headers={ "Authorization": f"Bearer {access_token}" }, data=payload, files=files) del files, image file = os.path.join("./website", str(filename)) os.remove(file) else: flash("Only accepting JPEG images", category="error") return redirect(url_for(f"views.recipes")) patch = requests.patch(f"{URL}/recipes/{id}", json=params, headers={ "Content-Type": "application/json", "Authorization": f"Bearer {access_token}" }) if patch.status_code == 200: flash("Successfully made changes to recipe", category="success") elif patch.status_code == 500: flash("One or more or the entered values are invalid", category="error") else: flash("Something went wrong. Pleasy try again", category="error") return redirect(url_for("views.recipes")) return render_template("edit_recipe.html", user=session, name=name, description=description, num_of_servings=num_of_servings, ingredients=ingredients, cook_time=cook_time, directions=directions) else: return redirect(url_for("views.recipes")) except Exception: return redirect(url_for("views.recipes"))