diff --git a/apps/jingrow/jingrow/core/api/dev.py b/apps/jingrow/jingrow/core/api/dev.py index 3471d01..4e0e50b 100644 --- a/apps/jingrow/jingrow/core/api/dev.py +++ b/apps/jingrow/jingrow/core/api/dev.py @@ -39,7 +39,7 @@ async def create_pagetypes(payload: Dict[str, Any]): frontend_path = str(fp) if create_backend: - bp = root / "apps" / app / app / module / "pagetype" / slug / f"{slug}.py" + bp = root / "apps" / app / app / app / module / "pagetype" / slug / f"{slug}.py" bp.parent.mkdir(parents=True, exist_ok=True) if bp.exists(): backend_exists = True @@ -127,16 +127,6 @@ app_license = "{license_type.lower()}" ''' (app_inner_dir / "modules.txt").write_text(modules_content, encoding="utf-8") - # 创建patches.txt - patches_content = '''[pre_model_sync] -# Patches added in this section will be executed before pagetypes are migrated -# Read docs to understand patches: https://framework.jingrow.com/docs/v14/user/en/database-migrations - -[post_model_sync] -# Patches added in this section will be executed after pagetypes are migrated -''' - (app_inner_dir / "patches.txt").write_text(patches_content, encoding="utf-8") - # 创建目录结构 (app_inner_dir / "config").mkdir(exist_ok=True) (app_inner_dir / "config" / "__init__.py").write_text("", encoding="utf-8") @@ -146,135 +136,58 @@ app_license = "{license_type.lower()}" (app_inner_dir / "public" / "js").mkdir(exist_ok=True) (app_inner_dir / "public" / ".gitkeep").write_text("", encoding="utf-8") - (app_inner_dir / "templates").mkdir(exist_ok=True) - (app_inner_dir / "templates" / "pages").mkdir(exist_ok=True) - (app_inner_dir / "templates" / "pages" / "__init__.py").write_text("", encoding="utf-8") - (app_inner_dir / "templates" / "includes").mkdir(exist_ok=True) + # 创建module目录(与config、public平级) + (app_inner_dir / app_name).mkdir(exist_ok=True) + (app_inner_dir / app_name / "__init__.py").write_text("", encoding="utf-8") - # 创建API模块 - if include_api: - api_dir = app_inner_dir / "api" - api_dir.mkdir(parents=True, exist_ok=True) - (api_dir / "__init__.py").write_text("", encoding="utf-8") - - # 创建权限模块 - permission_content = f'''# coding: utf-8 - -import jingrow - -def has_app_permission(): - """检查应用权限""" - return True - -def has_permission(pagetype, name=None): - """检查页面类型权限""" - return True -''' - (api_dir / "permission.py").write_text(permission_content, encoding="utf-8") - - # 创建前端组件 - if include_frontend: - # 前端目录已经在上面创建了,这里不需要重复创建 - pass - - # 创建测试文件 - if include_tests: - tests_dir = app_inner_dir / "tests" - tests_dir.mkdir(parents=True, exist_ok=True) - (tests_dir / "__init__.py").write_text("", encoding="utf-8") - - test_content = f'''# coding: utf-8 - -import pytest - -class Test{app_title.replace(' ', '')}: - """{{app_title}} 测试类""" - - def test_app_creation(self): - """测试应用创建""" - assert True - - def test_pagetype_creation(self): - """测试PageType创建""" - # 测试PageType是否正确创建 - pass -''' - (tests_dir / f"test_{app_name}.py").write_text(test_content, encoding="utf-8") - - # 创建README.md + # 创建README.md(最小化文档) readme_content = f'''# {app_title} {description} -## 功能特性 - -- 基于Jingrow框架的现代化应用 -- 支持云端和本地部署 -- 符合最佳实践和未来趋势 - ## 安装 -### 本地开发 - ```bash -# 安装依赖 -pip install -r requirements.txt - -# 运行开发服务器 -python -m uvicorn main:app --port 8001 +pip install -e . ``` -### 云端部署 - -```bash -# 安装到Jingrow Cloud -bench --site your-site install-app {app_name} -``` - -## PageTypes - -*PageTypes will be created through Jingrow Cloud backend after app installation* - ## 开发 -### 添加新的PageType - -1. 在 `{app_name}/{app_name}/pagetype/` 下创建新的PageType类 -2. 在 `api/` 下添加对应的API处理函数 -3. 在 `frontend/` 下添加前端组件 - -### API接口 - -- `/{app_name}/api/` - REST API接口 +```bash +pip install -e ".[dev]" +``` ## 许可证 {license_type} License - -## 联系方式 - -{publisher} - {email} ''' (app_dir / "README.md").write_text(readme_content, encoding="utf-8") - # 创建requirements.txt - requirements_content = '''# Core dependencies -fastapi>=0.104.0 -uvicorn>=0.24.0 -pydantic>=2.0.0 -python-multipart>=0.0.6 + pyproject_content = f'''[build-system] +requires = ["setuptools>=61.0", "wheel"] +build-backend = "setuptools.build_meta" -# Database -sqlalchemy>=2.0.0 -alembic>=1.12.0 +[project] +name = "{app_name}" +version = "0.0.1" +description = "{description}" +authors = [ + {{name = "{publisher}", email = "{email}"}} +] +license = {{text = "{license_type}"}} +requires-python = ">=3.8" -# Development -pytest>=7.4.0 -pytest-asyncio>=0.21.0 -black>=23.0.0 -flake8>=6.0.0 +dependencies = [ + # Add your app-specific dependencies here +] + +[project.optional-dependencies] +dev = [ + "pytest>=7.0.0", + "black>=23.0.0", +] ''' - (app_dir / "requirements.txt").write_text(requirements_content, encoding="utf-8") + (app_dir / "pyproject.toml").write_text(pyproject_content, encoding="utf-8") return { "success": True,