Welcome to flask-beet’s documentation!

Flask-Beet Quickstart Guide

Installation

You can install flask_beet via pip::

pip3 install flask_beet

Integration

After installation, you can integrate this extension by loading it with::

from flask import Flask
from flask_beet import Beet
app = Flask(__name__)
beet = Beet(app)

or using the factory method::

from flask import Flask
from flask_beet import Beet
app = Flask(__name__)
beet = Beet()

# elsewhere
from . import beet
beet.init_app(app)

Additionally to that, you have to include the BeetMixin into use user model::

from flask_beet import BeetMixin

# Replace
-class User(db.Model, UserMixin):

# with
+class User(db.Model, UserMixin, BeetMixin):

Usage

The extension will come with a new endpoint::

/beet/login

That deals with beet login.

Configuration

Configuration variables are:

"BEET_ONBOARDING_VIEW": "/register",
"BEET_INVALID_PAYLOAD_MESSAGE": "Invalid payload!",
"BEET_UNIQUE_MESSAGE_GENERATOR": unique_request_id,
"BEET_UNIQUE_MESSAGE_SESSION_KEY": "_signed_message_payload",
"BEET_ONBOARDING_ACCOUNT_NAME_KEY": "_onboarding_account_name",
"BEET_ONBOARDING_MESSAGE_KEY": "_onboarding_message",
"BEET_LOGIN_TEMPLATE": "/beet/login.html",
"BEET_REMEMBER": True,

flask_beet

flask_beet package

Submodules

flask_beet.forms module
class flask_beet.forms.SignedMessageLoginForm(formdata=<object object>, **kwargs)[source]

Bases: flask_wtf.form.FlaskForm

The login form only requires a TextArea and a submit button

message = <UnboundField(TextAreaField, ('Signed Message', [<wtforms.validators.DataRequired object>, <flask_beet.forms.ValidSignedMessage object>]), {'id': 'signedMessage'})>
submit = <UnboundField(SubmitField, ('Login',), {})>
validate()[source]

Validates the form by calling validate on each field, passing any extra Form.validate_<fieldname> validators to the field validator.

class flask_beet.forms.ValidSignedMessage(message='Message invalid!')[source]

Bases: object

This Validator is used to check the signed message

It will return (unless exception is raised) an object that has additional attributes:

  • field.signed_by_account
  • field.signed_by_name
  • field.plain_message
flask_beet.signals module
flask_beet.utils module
flask_beet.utils.unique_request_id()[source]

Return a unique string

flask_beet.views module
flask_beet.views.beet_js()[source]

Return the BEET logo

Return the BEET logo

flask_beet.views.login()[source]

This is the main endpoint. It presents a login form from /beet/login.html and deals with loggin in a user

Module contents

class flask_beet.Beet(app=None)[source]

Bases: object

init_app(app)[source]

Initialize app according to flask factories

class flask_beet.BeetMixin[source]

Bases: object

This mixing is required to have knowledge over which user connects to which account

beet_account_name = Column(None, String(length=255), table=None)
classmethod find_beet_account_name(name)[source]

Find a user that has this account name

get_beet_account_name()[source]

Get an account name

set_beet_account_name(name)[source]

Set a beet account name

tests package

Submodules

tests.test_beet module
class tests.test_beet.Role(name, description)[source]

Bases: sqlalchemy.ext.declarative.api.Model, flask_security.core.RoleMixin

description
id
name
class tests.test_beet.TestCases(methodName='runTest')[source]

Bases: flask_testing.utils.TestCase

create_app()[source]

Create your Flask app here, with any configuration you need.

setUp()[source]

Hook method for setting up the test fixture before exercising it.

setup_user()[source]
test_form()[source]
test_image()[source]
test_js()[source]
test_login()[source]
test_login_existing()[source]
test_login_inactive_user()[source]
test_login_invalidpayload()[source]
test_login_invalidsig()[source]
test_login_invalidsignature()[source]
test_login_unconfirmed_user()[source]
class tests.test_beet.User(**kwargs)[source]

Bases: sqlalchemy.ext.declarative.api.Model, flask_security.core.UserMixin, flask_beet.BeetMixin

active
beet_account_name
confirmed_at
current_login_at
current_login_ip
email
id
last_login_at
last_login_ip
login_count
password
roles

Module contents

Indices and tables