Skip to main content

labull-framework

一个可插拔的 Django app(import 名 labull_framework),提供两件事:

  • Authing / OIDC 登录:自带的认证后端,只用标准库 + PyJWT,不依赖任何 OIDC 客户端包。
  • magic block:一个 uuid + 一整个文件包就是一个功能块,住在数据库里、在沙箱 iframe 里渲染, 不重新编译、不重启;块可以带自己的后端 Python(backend_open.py)。

另附一个可选的 数据模型页(LABULL_SCHEMA_CANVAS=on 才开)。

安装

pip install labull-framework

接进一个 Django 项目

settings.py 里三件事:

from labull_framework.env import load_env_file
load_env_file(BASE_DIR / '.env')            # ① 第一行:读 .env

AUTH_USER_MODEL = 'labull_framework.User'   # ② 第一次 migrate 之前就要设好

from labull_framework.settings import apply_platform_settings
apply_platform_settings(globals())          # ③ 最后一行:把平台的设置补进来

urls.py 里一行:

from labull_framework.urls import urlpatterns as labull_urls
urlpatterns = [*labull_urls, path('admin/', admin.site.urls)]

wsgi.py 里一行(别漏,重设管理员名单与启动体检都在这里):

from labull_framework.magic_block.health import startup_once
startup_once()

然后:

python manage.py migrate
python manage.py runserver

.env 最少要这几项:

DATABASE_URL=postgres://postgres:postgres@localhost:5432/app
SSO_ISSUER=https://<你的域名>.authing.cn/oidc
SSO_CLIENT_ID=<Authing 应用 ID>
SSO_CLIENT_SECRET=<Authing 应用密钥>
SSO_REDIRECT_URI=http://localhost:8000/auth/callback
SSO_WEB_ORIGIN=http://localhost:5173
CORS_ORIGIN=http://localhost:5173

sqlite:///db.sqlite3 也认,本地开发不必装数据库。

想要什么 怎么做
谁是管理员 配 BOOTSTRAP_ADMIN_WORK_IDS=工号,工号 —— 它是声明式的名单:启动时名单里的人补上 is_staff,名单之外的一律清掉(没配就是"一个管理员都没有")。它不碰 is_superuser,所以别拿超管当后门
看数据模型那一页 设 LABULL_SCHEMA_CANVAS=on,浏览器打开 /
导出一份模型形状 python manage.py labull_contract --out .labull/contract.json

magic block

一个块 = 一个 uuid + 一整个文件包:

我的块/
├─ index.open.html        入口(必备)
├─ magic-block.open.yaml  清单(必备):id / module / name / brief 四个键
├─ 任意 js / css
└─ backend_open.py        块自己的后端(可选)

块后端与项目里别的 Python 代码没有区别:

from labull_framework.magic_block.sdk import MagicBackendAPI, errors

class Order:
    @MagicBackendAPI()                       # 省略 permission = 任何登录用户都能调
    def list(self, ctx, params):
        from modules.orders.models import Order
        return [{'id': o.id} for o in Order.objects.all()[:20]]

    @MagicBackendAPI(permission='labull_framework.edit_blocks')
    def close(self, ctx, params):
        if not params.get('id'):
            raise errors.BadRequest('要给我一个 id')
        return {'ok': True}

配置:环境变量里带 BLOCK_ 前缀的才会进 ctx.config(BLOCK_OCR_KEY=a ⇒ ctx.config['OCR_KEY'])。

运行环境

  • Python ≥ 3.10
  • Django ≥ 4.2(在 6.1 上验证过)
  • PyJWT(带 crypto 后端)

License

MIT

Metadata

Release files for labull-framework 0.1.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for labull-framework 0.1.4.2
File Size Uploaded
labull_framework-0.1.4.2.tar.gz 192.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for labull-framework 0.1.4.2
File Interpreter ABI Platform
labull_framework-0.1.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 404.4 kB

Release files / labull_framework-0.1.4.2.tar.gz

Download URL labull_framework-0.1.4.2.tar.gz
Size 192.4 kB
Tags Source
SHA-256 checksum
How to use checksums
612a5412cb191156b0f38125dc273d8dd553b79b63073ccf594d2e5fa80922fb
BLAKE2b-256 checksum
How to use checksums
aa68d91096c1c4840fa9e1e1b9f07050614e38d82a7068f4e76de4c876227f15
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10

Release files / labull_framework-0.1.4.2-py3-none-any.whl

Download URL labull_framework-0.1.4.2-py3-none-any.whl
Size 212.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eee60bfc05aac5ea84178ddad1226bdda801cedda3ffa009af2c7e496bbac23e
BLAKE2b-256 checksum
How to use checksums
99b04e52a711962deab8813cf582d769c30c1cdd9c25381f3bd2f573fcabf2df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.10
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page