コード例 #1
0
ファイル: proloco_flask.py プロジェクト: carlozanieri/proloco
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(""))
コード例 #2
0
ファイル: proloco_flask.py プロジェクト: carlozanieri/proloco
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(""))
コード例 #3
0
ファイル: proloco_flask.py プロジェクト: carlozanieri/proloco
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(""))
コード例 #4
0
ファイル: proloco_flask.py プロジェクト: carlozanieri/proloco
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)
コード例 #5
0
ファイル: proloco_flask.py プロジェクト: carlozanieri/proloco
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(""))