Added complete plugin documentation with visual mockups and expanded template
variable system with CONTEXT, DATE helpers, and default values.
Backend Changes:
- Extended template_parser.py to support all new template types
- Added PROMPT with default values: {{PROMPT:var|desc|default}}
- Added CONTEXT variables: {{CONTEXT:business_name}}, {{CONTEXT:owner_email}}
- Added DATE helpers: {{DATE:today}}, {{DATE:+7d}}, {{DATE:monday}}
- Implemented date expression evaluation for relative dates
- Updated compile_template to handle all template types
- Added context parameter for business data auto-fill
Frontend Changes:
- Created comprehensive HelpPluginDocs.tsx with Stripe-style API docs
- Added visual mockup of plugin configuration form
- Documented all template types with examples and benefits
- Added Command Reference section with allowed/blocked Python commands
- Documented all HTTP methods (GET, POST, PUT, PATCH, DELETE)
- Added URL whitelisting requirements and approval process
- Created Platform Staff management page with edit modal
- Added can_approve_plugins and can_whitelist_urls permissions
Platform Staff Features:
- List all platform_manager and platform_support users
- Edit user details with role-based permissions
- Superusers can edit anyone
- Platform managers can only edit platform_support users
- Permission cascade: users can only grant permissions they have
- Real-time updates via React Query cache invalidation
Documentation Highlights:
- 4 template types: PROMPT, CONTEXT, DATE, and automatic validation
- Visual form mockup showing exactly what users see
- All allowed control flow (if/elif/else, for, while, try/except, etc.)
- All allowed built-in functions (len, range, min, max, etc.)
- All blocked operations (import, exec, eval, class/function defs)
- Complete HTTP API reference with examples
- URL whitelisting process: contact pluginaccess@smoothschedule.com
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
30 lines
1.2 KiB
Python
30 lines
1.2 KiB
Python
"""
|
|
Schedule App URLs
|
|
"""
|
|
from django.urls import path, include
|
|
from rest_framework.routers import DefaultRouter
|
|
from .views import (
|
|
ResourceViewSet, EventViewSet, ParticipantViewSet,
|
|
CustomerViewSet, ServiceViewSet, StaffViewSet, ResourceTypeViewSet,
|
|
ScheduledTaskViewSet, TaskExecutionLogViewSet, PluginViewSet
|
|
)
|
|
|
|
# Create router and register viewsets
|
|
router = DefaultRouter()
|
|
router.register(r'resource-types', ResourceTypeViewSet, basename='resourcetype')
|
|
router.register(r'resources', ResourceViewSet, basename='resource')
|
|
router.register(r'appointments', EventViewSet, basename='appointment') # Alias for frontend
|
|
router.register(r'events', EventViewSet, basename='event')
|
|
router.register(r'participants', ParticipantViewSet, basename='participant')
|
|
router.register(r'customers', CustomerViewSet, basename='customer')
|
|
router.register(r'services', ServiceViewSet, basename='service')
|
|
router.register(r'staff', StaffViewSet, basename='staff')
|
|
router.register(r'scheduled-tasks', ScheduledTaskViewSet, basename='scheduledtask')
|
|
router.register(r'task-logs', TaskExecutionLogViewSet, basename='tasklog')
|
|
router.register(r'plugins', PluginViewSet, basename='plugin')
|
|
|
|
# URL patterns
|
|
urlpatterns = [
|
|
path('', include(router.urls)),
|
|
]
|