def master(): """ simple entry for test """ return flask.render_template('master.html', tempdir="/srv/http/proloco_flask/static/img/", menu=Connect.menu(""), submenu=Connect.submnu(""), submenu2=Connect.submnu2(""))
def entry_point(): """ simple entry for test """ return flask.render_template('master.xhtml', luogo="index", pagina=Connect.body("", "index"), tempdir="/srv/http/proloco_flask/static/img/", menu=Connect.menu(""), submenu=Connect.submnu(""), submenu2=Connect.submnu2(""))
def logout(): # Remove session data, this will log the user out session.pop('loggedin', None) session.pop('id', None) session.pop('username', None) # Redirect to login page return flask.render_template('master.xhtml', luogo="index", pagina=Connect.body("", "index"), tempdir="/srv/http/proloco_flask/static/img/", menu=Connect.menu(""), submenu=Connect.submnu(""), submenu2=Connect.submnu2(""))
def ins_manifesta(): # Output message if something goes wrong... msg = '' # Check if "username", "password" and "email" POST requests exist (user submitted form) if request.method == 'POST' and 'username' in request.form and 'password' in request.form and 'email' in request.form: # Create variables for easy access username = request.form['username'] password = request.form['password'] email = request.form['email'] cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor) cursor.execute('SELECT * FROM accounts WHERE username = %s', (username, )) account = cursor.fetchone() # If account exists show error and validation checks if account: msg = 'Account already exists!' elif not re.match(r'[^@]+@[^@]+\.[^@]+', email): msg = 'Invalid email address!' elif not re.match(r'[A-Za-z0-9]+', username): msg = 'Username must contain only characters and numbers!' elif not username or not password or not email: msg = 'Please fill out the form!' else: multiple_upload() # Account doesnt exists and the form data is valid, now insert new account into accounts table cursor.execute('INSERT INTO accounts VALUES (NULL, %s, %s, %s)', ( username, password, email, )) mysql.connection.commit() msg = 'You have successfully registered!' elif request.method == 'POST': # Form is empty... (no POST data) msg = 'Please fill out the form!' # Show registration form with message (if any) if 'loggedin' in session: return render_template('ins_manifestazioni.html', msg=msg, tempdir="/srv/http/proloco_flask/static/img/", menu=Connect.menu(""), submenu=Connect.submnu(""), submenu2=Connect.submnu2("")) else: msg = 'devi registrarti per inserire contenuti' return render_template('index.html', msg=msg)
def multiple_upload(file_element_name="files[]"): ###upload_folder = request.form['uploaddir'] UPLOAD_FOLDER = request.form['uploaddir'] """Saves files uploaded from <input type="file">, can be multiple files Positive Test (single file): curl -X POST http://localhost:8080/multipleupload -F "files[]=@tests/car.jpg" Positive Test (multiple files): curl -X POST http://localhost:8080/multipleupload -F "files[]=@tests/car.jpg" -F "files[]=@tests/testdoc.pdf" Negative Test (using GET method): curl -X GET http://localhost:8080/multipleupload Negative Test (no input file element): curl -X POST http://localhost:8080/multipleupload Negative Test (not whitelisted file extension): curl -X POST http://localhost:8080/multipleupload -F "files[]=@tests/testdoc.docx" """ # must be POST/PUT if flask.request.method not in ['POST', 'PUT']: add_flash_message("Can only upload on POST/PUT methods") return flask.redirect( flask.url_for("upload_form", pagina=Connect.body("", "upload"), luogo="upload", menu=Connect.menu(""), submenu=Connect.submnu(""))) # files will be materialized as soon as we touch request.files, # so check for errors right up front try: flask.request.files except OSError as e: print("ERROR ON INITIAL TOUCH OF request.files") add_flash_message("ERROR materializing files to disk: " + StringIO(str(e)).getvalue()) return flask.redirect( flask.url_for("upload_form", pagina=Connect.body("", "upload"), luogo="upload", menu=Connect.menu(""), submenu=Connect.submnu(""))) # must have <input type="file"> element if file_element_name not in flask.request.files: add_flash_message('No files uploaded') return flask.redirect( flask.url_for("upload_form", pagina=Connect.body("", "upload"), luogo="upload", menu=Connect.menu(""), submenu=Connect.submnu(""))) # get list of files uploaded files = flask.request.files.getlist(file_element_name) # if user did not select file, filename will be empty if len(files) == 1 and files[0].filename == '': add_flash_message('No selected file') return flask.redirect( flask.url_for("upload_form", pagina=Connect.body("", "upload"), luogo="upload", menu=Connect.menu(""), submenu=Connect.submnu(""))) # loop through uploaded files, saving for ufile in files: try: filename = secure_filename(ufile.filename) UPLOAD_FOLDER = request.form['uploaddir'] if allowed_file(filename): print("uploading file {} of type {}".format( filename, ufile.content_type)) ##ufile.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) ufile.save(os.path.join(UPLOAD_FOLDER, filename)) #ufile.save(request.form['uploaddir'], filename) flask.flash("Just uploaded: " + request.form['uploaddir'] + filename) else: add_flash_message("not going to process file with extension " + filename) except OSError as e: add_flash_message("ERROR writing file " + filename + " to disk: " + StringIO(str(e)).getvalue()) return flask.render_template('ins_manifestazioni.html', luogo="index", pagina=Connect.body("", "index"), tempdir="/srv/http/proloco_flask/static/img/", menu=Connect.menu(""), submenu=Connect.submnu(""), submenu2=Connect.submnu2(""))