Skip to main content

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.csv

main.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)