|
6 | 6 | """ |
7 | 7 |
|
8 | 8 | from django.contrib import admin |
| 9 | +from django.urls import path, reverse |
| 10 | +from django.utils.html import format_html |
9 | 11 |
|
10 | 12 | from .models import ( |
11 | 13 | ApprovalTask, |
@@ -145,12 +147,61 @@ class FormDefinitionAdmin(admin.ModelAdmin): |
145 | 147 | "requires_login", |
146 | 148 | "version", |
147 | 149 | "created_at", |
| 150 | + "form_builder_link", |
148 | 151 | ) |
149 | 152 | list_filter = ("is_active", "requires_login") |
150 | 153 | search_fields = ("name", "slug", "description") |
151 | 154 | prepopulated_fields = {"slug": ("name",)} |
152 | 155 | inlines = [FormFieldInline] |
153 | 156 | 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 |
154 | 205 |
|
155 | 206 |
|
156 | 207 | @admin.register(WorkflowDefinition) |
|
0 commit comments