Skip to content

Commit e7ed5b3

Browse files
committed
Start of visual form builder
1 parent daf4887 commit e7ed5b3

File tree

10 files changed

+2674
-0
lines changed

10 files changed

+2674
-0
lines changed

django_forms_workflows/admin.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
"""
77

88
from django.contrib import admin
9+
from django.urls import path, reverse
10+
from django.utils.html import format_html
911

1012
from .models import (
1113
ApprovalTask,
@@ -145,12 +147,61 @@ class FormDefinitionAdmin(admin.ModelAdmin):
145147
"requires_login",
146148
"version",
147149
"created_at",
150+
"form_builder_link",
148151
)
149152
list_filter = ("is_active", "requires_login")
150153
search_fields = ("name", "slug", "description")
151154
prepopulated_fields = {"slug": ("name",)}
152155
inlines = [FormFieldInline]
153156
filter_horizontal = ("submit_groups", "view_groups", "admin_groups")
157+
change_form_template = "admin/django_forms_workflows/formdef_change_form.html"
158+
159+
def form_builder_link(self, obj):
160+
"""Display a link to the visual form builder"""
161+
if obj.pk:
162+
url = reverse('admin:form_builder_edit', args=[obj.pk])
163+
return format_html(
164+
'<a href="{}" class="button" target="_blank">'
165+
'<i class="bi bi-pencil-square"></i> Visual Builder'
166+
'</a>',
167+
url
168+
)
169+
return "-"
170+
form_builder_link.short_description = "Visual Builder"
171+
172+
def get_urls(self):
173+
"""Add custom URLs for the form builder"""
174+
urls = super().get_urls()
175+
from . import form_builder_views
176+
177+
custom_urls = [
178+
path(
179+
'builder/new/',
180+
self.admin_site.admin_view(form_builder_views.form_builder_view),
181+
name='form_builder_new'
182+
),
183+
path(
184+
'builder/<int:form_id>/',
185+
self.admin_site.admin_view(form_builder_views.form_builder_view),
186+
name='form_builder_edit'
187+
),
188+
path(
189+
'builder/api/load/<int:form_id>/',
190+
self.admin_site.admin_view(form_builder_views.form_builder_load),
191+
name='form_builder_api_load'
192+
),
193+
path(
194+
'builder/api/save/',
195+
self.admin_site.admin_view(form_builder_views.form_builder_save),
196+
name='form_builder_api_save'
197+
),
198+
path(
199+
'builder/api/preview/',
200+
self.admin_site.admin_view(form_builder_views.form_builder_preview),
201+
name='form_builder_api_preview'
202+
),
203+
]
204+
return custom_urls + urls
154205

155206

156207
@admin.register(WorkflowDefinition)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"""
2+
URL Configuration for Visual Form Builder
3+
4+
These URLs are meant to be included in the Django admin site.
5+
"""
6+
7+
from django.urls import path
8+
9+
from . import form_builder_views
10+
11+
app_name = "form_builder"
12+
13+
urlpatterns = [
14+
# Main builder view
15+
path('new/', form_builder_views.form_builder_view, name='builder_new'),
16+
path('<int:form_id>/', form_builder_views.form_builder_view, name='builder_edit'),
17+
18+
# API endpoints
19+
path('api/load/<int:form_id>/', form_builder_views.form_builder_load, name='api_load'),
20+
path('api/save/', form_builder_views.form_builder_save, name='api_save'),
21+
path('api/preview/', form_builder_views.form_builder_preview, name='api_preview'),
22+
]
23+

0 commit comments

Comments
 (0)