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

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.10
File Size Uploaded
labull_framework-0.1.10.tar.gz 234.7 kB Details

Built distribution (wheel)

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

Total release size: 490.0 kB

Release files / labull_framework-0.1.10.tar.gz

Download URL labull_framework-0.1.10.tar.gz
Size 234.7 kB
Tags Source
SHA-256 checksum
How to use checksums
60306f2c099462cfc68bbc962505e74e974ad7ef56b348dee879c9d10a9b63d2
BLAKE2b-256 checksum
How to use checksums
b8315dad5e4f66c655ab590243a9ae680a28009f286fd2ac2ff2f654a379e3b2
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.10-py3-none-any.whl

Download URL labull_framework-0.1.10-py3-none-any.whl
Size 255.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1afce7751a68a38748bfd9ab559ab4637ae900563236c49a0b1fb8edd2ab76b1
BLAKE2b-256 checksum
How to use checksums
068cfb27acded35517c007fdd08156975ea18df49c5268fd42d13fbc5cd8166c
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