Flask Project
app tree#
โโโ appโโโ exportfile.pyโโโ importfile.pyโโโ inputโโโ outputโโโ parse.pyโโโ readme.MDโโโ requirements.txtโโโ restricted.csvโโโ restrictionsโ โโโ restricted.csvโโโ resultsโ โโโ restricted.csvโโโ scrape.pyโโโ script.jsโโโ script.shโโโ send_email.pyโโโ sendgrid.envโโโ staticโ โโโ srcโ โ โโโ icon.pngโ โ โโโ outline_beach_access_black_24dp.pngโ โโโ style.cssโโโ templatesโ โโโ index.htmlโ โโโ login.htmlโ โโโ restrictions.htmlโ โโโ thanks.htmlโ โโโ upload.htmlโโโ upload โโโ restricted.csvmain.py#
This is a file upload page that will parse a csv file and save the data to external folder.
from flask import Flask, flash, request, redirect, render_template, url_forfrom werkzeug.utils import secure_filenameimport csvimport pandas as pdimport globimport datetimeimport os, re, os.pathimport requestsimport egnyte
app=Flask(__name__)
app.secret_key = "secret key"app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
path = os.getcwd()# file UploadUPLOAD_FOLDER = os.path.join(path, 'uploads')
if not os.path.isdir(UPLOAD_FOLDER): os.mkdir(UPLOAD_FOLDER)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
ALLOWED_EXTENSIONS = set(['csv', 'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
def allowed_file(filename): return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/run')def main(): # use your path path = (r'./uploads/') # imports csv files as imported name all_files = glob.glob(path + "/*.csv")
# iterate through csv files for filename in all_files: data = pd.read_csv(filename) df = pd.melt(data, var_name='location') df.dropna(subset=['value'], inplace=True) df.columns = ['location', 'upc'] # df = df[df['upc'].str.split('=').str.len().lt(2)]
print(df) # print and save file name to output folder as dateime current_date = datetime.datetime.now() filename = str(current_date.second)+str(current_date.minute)+str(current_date.hour)+str(current_date.day)+str(current_date.month)+str(current_date.year) df.to_csv(str('./output/' + filename + '.csv' ), index=False)
# remove file from upload folder before next file is run for root, dirs, files in os.walk(path): for file in files: os.remove(os.path.join(root, file))
# initiate credentials client = egnyte.EgnyteClient({"domain": "", "access_token": ""})
#upload file to final destinaton path = 'output/*.csv' # removes files path remove = (r'./output/')
for name in glob.glob(path): print(name) file_obj = client.file("" + name) with open(name, "rb") as fp: file_obj.upload(fp) print("dunzo")
# remove files from folder once exported for root, dirs, files in os.walk(remove): for file in files: os.remove(os.path.join(root, file))
return redirect('/')
# Route for handling the login page logic@app.route('/', methods=['GET', 'POST'])def login(): error = None if request.method == 'POST': if request.form['username'] != 'admin' or request.form['password'] != 'admin@master': error = 'Invalid Credentials. Please try again.' else: return redirect(url_for('home')) return render_template('login.html', error=error)
@app.route('/home')def home(): return render_template('upload.html')
@app.route('/', methods=['GET','POST'])def upload_file(): if request.method == 'POST': # check if the post request has the file part if 'file' not in request.files: flash('No file part') return redirect(request.url) file = request.files['file'] if file.filename == '': flash('No file selected for uploading') return redirect(request.url) if file and allowed_file(file.filename): filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) flash('File successfully uploaded; check output folder') return redirect('/') else: flash('Allowed file types are txt, pdf, png, jpg, jpeg, gif') return redirect(request.url)
if __name__ == "__main__": app.run(host = '127.0.0.1',port = 4244, debug = True)