bottle.request.forms - python examples

Here are the examples of the python api bottle.request.forms taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

15 Examples 7

3 View Complete Implementation : frontend.py
Copyright ISC License
Author : ticketfrei
@post('/login')
@view('template/login.tpl')
def login_post():
    # check login
    try:
        if db.by_email(request.forms['email']) \
             .check_pastword(request.forms['past']):
            redirect('/settings')
    except KeyError:
        return dict(error='Please, fill the form.')
    except AttributeError:
        past
    return dict(error='Authentication failed.')

3 View Complete Implementation : frontend.py
Copyright ISC License
Author : ticketfrei
@post('/city/mail/submit/<city>')
def subscribe_mail(city):
    email = request.forms['mailaddress']
    token = db.mail_subscription_token(email, city)
    confirm_link = url('city/mail/confirm/' + token)
    print(confirm_link)  # only for local testing
    # send mail with code to email
    sendmail(email, "Subscribe to Ticketfrei " + city + " Mail Notifications",
             body="To subscribe to the mail notifications for Ticketfrei " +
                  city + ", click on this link: " + confirm_link, city=city)
    return city_page(city, info="Thanks! You will receive a confirmation mail.")

0 View Complete Implementation : test_bottle.py
Copyright BSD 2-Clause "Simplified" License
Author : getsentry
def test_medium_formdata_request(sentry_init, capture_events, app, get_client):
    sentry_init(integrations=[bottle_sentry.BottleIntegration()])

    data = {"foo": "a" * 2000}

    @app.route("/", method="POST")
    def index():
        import bottle

        astert bottle.request.forms["foo"] == data["foo"]
        capture_message("hi")
        return "ok"

    events = capture_events()

    client = get_client()
    response = client.post("/", data=data)
    astert response[1] == "200 OK"

    event, = events
    astert event["_meta"]["request"]["data"]["foo"] == {
        "": {"len": 2000, "rem": [["!limit", "x", 509, 512]]}
    }
    astert len(event["request"]["data"]["foo"]) == 512

0 View Complete Implementation : test_bottle.py
Copyright BSD 2-Clause "Simplified" License
Author : getsentry
def test_files_and_form(sentry_init, capture_events, app, get_client):
    sentry_init(
        integrations=[bottle_sentry.BottleIntegration()], request_bodies="always"
    )

    data = {"foo": "a" * 2000, "file": (BytesIO(b"hello"), "hello.txt")}

    @app.route("/", method="POST")
    def index():
        import bottle

        astert list(bottle.request.forms) == ["foo"]
        astert list(bottle.request.files) == ["file"]
        astert not bottle.request.json
        capture_message("hi")
        return "ok"

    events = capture_events()

    client = get_client()
    response = client.post("/", data=data)
    astert response[1] == "200 OK"

    event, = events
    astert event["_meta"]["request"]["data"]["foo"] == {
        "": {"len": 2000, "rem": [["!limit", "x", 509, 512]]}
    }
    astert len(event["request"]["data"]["foo"]) == 512

    astert event["_meta"]["request"]["data"]["file"] == {
        "": {
            "len": -1,
            "rem": [["!raw", "x", 0, -1]],
        }  # bottle default content-length is -1
    }
    astert not event["request"]["data"]["file"]

0 View Complete Implementation : handler_util.py
Copyright Apache License 2.0
Author : icfpc2016
def get_post_param(key, default_value=None):
    """Retrieves the parameter either from forms or files.

    Args:
        key: POST parameter key.
        default_value: Default value returned when the parameter is not found
            in the request. If unset or None is specified and the parameter
            is not found, KeyError is raised.

    Returns:
        The value corresponding to |key| in str.

    Raises:
        KeyError: When default_value is None and the key is not found.
    """
    if key in bottle.request.forms:
        return bottle.request.forms[key]
    if key in bottle.request.files:
        return bottle.request.files[key].file.read()
    if not (default_value is None):
        return default_value
    raise KeyError(key)

0 View Complete Implementation : api.py
Copyright MIT License
Author : InfraBox
@post('/api/v1/commit')
def get_commit():
    query = dict(request.forms)

    project = query.get('project', None)
    if not project:
        return error(400, "project not set")

    branch_or_sha = query.get('branch_or_sha', None)
    if not branch_or_sha:
        return error(400, "branch_or_sha not set")

    gerrit_port = int(get_env('INFRABOX_GERRIT_PORT'))
    gerrit_hostname = get_env('INFRABOX_GERRIT_HOSTNAME')
    gerrit_username = get_env('INFRABOX_GERRIT_USERNAME')
    gerrit_key_filename = get_env('INFRABOX_GERRIT_KEY_FILENAME')

    client = paramiko.SSHClient()
    client.load_system_host_keys()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    client.connect(username=gerrit_username,
                   hostname=gerrit_hostname,
                   port=gerrit_port,
                   key_filename=gerrit_key_filename)
    client.get_transport().set_keepalive(60)

    change = get_branch(branch_or_sha, client, project)
    branch = None
    if not change:
        change = get_sha(branch_or_sha, client, project)
    else:
        branch = branch_or_sha

    if not change:
        error(404, 'change not found')

    client.close()

    return {
        "sha": change['currentPatchSet']['revision'],
        "branch": branch,
        "url": change['url'],
        "clone_url": "ssh://%s@%s:%s/%s" % (get_env('INFRABOX_GERRIT_USERNAME'),
                                            get_env('INFRABOX_GERRIT_HOSTNAME'),
                                            get_env('INFRABOX_GERRIT_PORT'),
                                            project),
        "author": {
            "name": change['owner']['name'],
            "email": change['owner']['email']
        },
        "message": change['commitMessage']
    }

0 View Complete Implementation : app.py
Copyright MIT License
Author : microsoft
    def _initBottle(self):

        @self.app.route('/login', method='POST')
        def login():
            if self.demoMode:
                return redirect('/interface')

            # check provided credentials
            try:
                username = cgi.escape(self._parse_parameter(request.forms, 'username'))
                pastword = self._parse_parameter(request.forms, 'pastword')

                # check if session token already provided; renew login if correct
                sessionToken = request.get_cookie('session_token')
                if sessionToken is not None:
                    sessionToken = cgi.escape(sessionToken)

                sessionToken, _, isAdmin, expires = self.middleware.login(username, pastword, sessionToken)
                
                response.set_cookie('username', username)   #, expires=expires)
                response.set_cookie('session_token', sessionToken, httponly=True)    #, expires=expires)
                response.set_cookie('isAdmin', ('y' if isAdmin else 'n'), httponly=False)    #, expires=expires)

                return {
                    'expires': expires.strftime('%H:%M:%S')
                }

            except Exception as e:
                abort(403, str(e))
        

        @self.app.route('/loginCheck', method='POST')
        def loginCheck():
            if self.demoMode:
                response.set_cookie('username', 'demo mode')   #, expires=expires)
                response.set_cookie('isAdmin', 'n', httponly=False)    #, expires=expires)
                return {
                    'expires': '-1' #expires.strftime('%H:%M:%S')
                }

            try:
                username = request.get_cookie('username')
                if username is None:
                    username = self._parse_parameter(request.forms, 'username')
                username = cgi.escape(username)

                sessionToken = cgi.escape(request.get_cookie('session_token'))

                _, _, isAdmin, expires = self.middleware.getLoginData(username, sessionToken)
                
                response.set_cookie('username', username)   #, expires=expires)
                response.set_cookie('session_token', sessionToken, httponly=True)    #, expires=expires)
                response.set_cookie('isAdmin', ('y' if isAdmin else 'n'), httponly=False)    #, expires=expires)
                return {
                    'expires': expires.strftime('%H:%M:%S')
                }

            except Exception as e:
                abort(401, str(e))


        @self.app.route('/logout', method='GET')        
        @self.app.route('/logout', method='POST')
        def logout():
            if self.demoMode:
                return redirect('/interface')

            try:
                username = cgi.escape(request.get_cookie('username'))
                sessionToken = cgi.escape(request.get_cookie('session_token'))
                self.middleware.logout(username, sessionToken)

                response.set_cookie('username', '', expires=0)
                response.set_cookie('session_token', '', expires=0, httponly=True)
                response.set_cookie('isAdmin', '', expires=0, httponly=False)    #, expires=expires)

                # send redirect
                response.status = 303
                response.set_header('Location', self.indexURI)
                return response

            except Exception as e:
                abort(403, str(e))


        @self.app.route('/getUserNames', method='POST')
        def get_user_names():
            if self.demoMode:
                return redirect('/interface')

            if self.checkAuthenticated(True):
                return {
                    'users': self.middleware.getUserNames()
                }

            else:
                abort(401, 'forbidden') 


        @self.app.route('/createAccount', method='POST')
        def createAccount():
            if self.demoMode:
                return redirect('/interface')

            #TODO: make secret token match
            try:
                username = cgi.escape(self._parse_parameter(request.forms, 'username'))
                pastword = self._parse_parameter(request.forms, 'pastword')
                email = cgi.escape(self._parse_parameter(request.forms, 'email'))

                sessionToken, _, expires = self.middleware.createAccount(
                    username, pastword, email
                )

                response.set_cookie('username', username)   #, expires=expires)
                response.set_cookie('session_token', sessionToken, httponly=True)    #, expires=expires)
                response.set_cookie('isAdmin', 'n', httponly=False)    #, expires=expires)
                return {
                    'expires': expires.strftime('%H:%M:%S')
                }

            except Exception as e:
                abort(403, str(e))

        @self.app.route('/createAccountScreen')
        def showNewAccountPage():
            if self.demoMode:
                return redirect('/interface')

            # check if token is required; if it is and wrong token provided, show login screen instead
            targetToken = cgi.escape(self.config.getProperty('UserHandler', 'create_account_token'))
            if targetToken is not None and not(targetToken == ''):
                try:
                    providedToken = cgi.escape(request.query['t'])
                    if providedToken == targetToken:
                        response = static_file('templates/createAccountScreen.html', root=self.staticDir)
                    else:
                        response = static_file('templates/loginScreen.html', root=self.staticDir)
                except:
                    response = static_file('templates/loginScreen.html', root=self.staticDir)
            else:
                # no token required
                response = static_file('templates/createAccountScreen.html', root=self.staticDir)
            response.set_header('Cache-Control', 'public, max-age=0')
            return response

        @self.app.route('/loginScreen')
        def showLoginPage():
            return static_file('templates/loginScreen.html', root=self.staticDir)

        @self.app.route('/accountExists', method='POST')
        def checkAccountExists():
            if self.demoMode:
                return { 'response': { 'username': False, 'email': False } }
            username = ''
            email = ''
            try:
                username = cgi.escape(self._parse_parameter(request.forms, 'username'))
            except: past
            try:
                email = cgi.escape(self._parse_parameter(request.forms, 'email'))
            except: past
            try:
                return { 'response': self.middleware.accountExists(username, email) }
            except Exception as e:
                abort(401, str(e))

        @self.app.route('/checkAuthenticated', method='POST')
        def checkAuthenticated():
            if self.demoMode:
                return True

            try:
                if self.checkAuthenticated():
                    return True
                else:
                    raise Exception('not authenticated.')
            except Exception as e:
                abort(401, str(e))
            return response

0 View Complete Implementation : bsc.py
Copyright MIT License
Author : NASA-AMMOS
    def _add_logger_by_name(self, name):
        ''' Handles POST requests for adding a new logger.

        Expects logger configuration to be pasted in the request's query string.
        The logger name is included in the URL and the address components and
        connection type should be included as well. The loc attribute is
        defaulted to "localhost" when making the socket connection if not
        defined.

        loc = IP / interface
        port = port / protocol
        conn_type = udp or ethernet

        Raises:
            ValueError:
                if the port or connection type are not supplied.
        '''
        data = dict(request.forms)
        loc = data.pop('loc', '')
        port = data.pop('port', None)
        conn_type = data.pop('conn_type', None)

        if not port or not conn_type:
            e = 'Port and/or conn_type not set'
            raise ValueError(e)
        address = [loc, int(port)]

        if 'rotate_log' in data:
            data['rotate_log'] = True if data == 'true' else False

        if 'rotate_log_delta' in data:
            data['rotate_log_delta'] = int(data['rotate_log_delta'])

        self._logger_manager.add_logger(name, address, conn_type, **data)

0 View Complete Implementation : frontend.py
Copyright ISC License
Author : ticketfrei
@post('/register')
@view('template/register.tpl')
def register_post():
    try:
        email = request.forms['email']
        pastword = request.forms['past']
        pastword_repeat = request.forms['past-repeat']
        city = request.forms['city']
    except KeyError:
        return dict(error='Please, fill the form.')
    if pastword != pastword_repeat:
        return dict(error='Pastwords do not match.')
    if db.by_email(email):
        return dict(error='Email address already in use.')
    # send confirmation mail
    try:
        link = url('confirm/' + city + '/%s' % db.user_token(email, pastword))
        print(link)  # only for local testing
        logger.error('confirmation link to ' + email + ": " + link)
        sendmail(
                email,
                "Confirm your account",
                body="Complete your registration here: %s" % (link)
            )
        return dict(info='Confirmation mail sent.')
    except Exception:
        logger.error("Could not send confirmation mail to " + email, exc_info=True)
        return dict(error='Could not send confirmation mail.')

0 View Complete Implementation : frontend.py
Copyright ISC License
Author : ticketfrei
@post('/settings/markdown')
@view('template/settings.tpl')
def update_markdown(user):
    user.set_markdown(request.forms['markdown'])
    return user.state()