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.3

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.3
File Size Uploaded
labull_framework-0.1.4.3.tar.gz 195.7 kB Details

Built distribution (wheel)

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

Total release size: 410.9 kB

Release files / labull_framework-0.1.4.3.tar.gz

Download URL labull_framework-0.1.4.3.tar.gz
Size 195.7 kB
Tags Source
SHA-256 checksum
How to use checksums
54d268fd5dd5b44981734eb9b45ec9d5b156d7c46f0876a874206496b8cb2246
BLAKE2b-256 checksum
How to use checksums
17478f1990e3443b2bdbc370461a74fa11b8d0b18e36b422c22252da9efa5cc3
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.3-py3-none-any.whl

Download URL labull_framework-0.1.4.3-py3-none-any.whl
Size 215.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bae7f63fe00e3adb56ff711fafa97973d5bc5e4d042a306cfe25bc0a9881dc68
BLAKE2b-256 checksum
How to use checksums
34d186bcc8cd2d9cbbb841257afc1954fa73f3f7027f9d3788735dd340f4ef7b
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