|
13 | 13 | from django.views import View |
14 | 14 | from django.views.generic import CreateView, DeleteView, DetailView, UpdateView |
15 | 15 | from django.views.generic.edit import DeletionMixin |
| 16 | +from django.views.generic.list import ListView |
16 | 17 |
|
17 | 18 | from ..base import ( # get_registered_form_handler_plugins |
18 | 19 | fire_form_callbacks, |
|
40 | 41 | ImportFormEntryForm, |
41 | 42 | ImportFormWizardEntryForm, |
42 | 43 | ) |
| 44 | +from ..form_importers import ( |
| 45 | + ensure_autodiscover as ensure_importers_autodiscover, |
| 46 | + form_importer_plugin_registry, get_form_importer_plugin_urls |
| 47 | +) |
43 | 48 | from ..models import ( |
44 | 49 | FormElementEntry, |
45 | 50 | FormEntry, |
|
59 | 64 | EditFormEntryPermission, |
60 | 65 | EditFormHandlerEntryPermission, |
61 | 66 | ViewFormEntryPermission, |
| 67 | + ViewDashboardPermission, |
62 | 68 | ) |
63 | 69 | from ..settings import DEBUG, GET_PARAM_INITIAL_DATA, SORT_PLUGINS_BY_VALUE |
64 | 70 | from ..utils import ( |
|
88 | 94 | "DeleteFormHandlerEntryView", |
89 | 95 | "ViewFormEntryView", |
90 | 96 | "ViewFormEntrySubmittedView", |
| 97 | + "DashboardView", |
91 | 98 | ) |
92 | 99 |
|
93 | 100 | logger = logging.getLogger(__name__) |
@@ -219,6 +226,69 @@ def _run_after_plugin_entry_delete(self, request, form_entry_id): |
219 | 226 | def run_after_plugin_entry_delete(self, request, form_entry_id): |
220 | 227 | """Run after plugin entry has been deleted.""" |
221 | 228 |
|
| 229 | +# ***************************************************************************** |
| 230 | +# ***************************************************************************** |
| 231 | +# ******************************** Dashboards ********************************* |
| 232 | +# ***************************************************************************** |
| 233 | +# ***************************************************************************** |
| 234 | + |
| 235 | +# ***************************************************************************** |
| 236 | +# ********************************** Forms ************************************ |
| 237 | +# ***************************************************************************** |
| 238 | + |
| 239 | + |
| 240 | +class DashboardView(ListView): |
| 241 | + """Dashboard view.""" |
| 242 | + |
| 243 | + template_name = None |
| 244 | + theme = None |
| 245 | + permission_classes = (ViewDashboardPermission,) |
| 246 | + |
| 247 | + def get_queryset(self): |
| 248 | + """ |
| 249 | + Return the list of items for this view. |
| 250 | +
|
| 251 | + The return value must be an iterable and may be an instance of |
| 252 | + `QuerySet` in which case `QuerySet` specific behavior will be enabled. |
| 253 | + """ |
| 254 | + queryset = FormEntry._default_manager.filter( |
| 255 | + user__pk=self.request.user.pk |
| 256 | + ) |
| 257 | + ordering = self.get_ordering() |
| 258 | + if ordering: |
| 259 | + if isinstance(ordering, str): |
| 260 | + ordering = (ordering,) |
| 261 | + queryset = queryset.order_by(*ordering) |
| 262 | + |
| 263 | + return queryset |
| 264 | + |
| 265 | + def get_context_data(self, **kwargs): |
| 266 | + """Get context data.""" |
| 267 | + context = super(DashboardView, self).get_context_data(**kwargs) |
| 268 | + context.update({ |
| 269 | + "form_entries": self.get_queryset(), |
| 270 | + 'form_importers': get_form_importer_plugin_urls(), |
| 271 | + }) |
| 272 | + if not self.theme: |
| 273 | + theme = get_theme(request=self.request, as_instance=True) |
| 274 | + else: |
| 275 | + theme = self.theme |
| 276 | + |
| 277 | + if theme: |
| 278 | + context.update({"fobi_theme": theme}) |
| 279 | + return context |
| 280 | + |
| 281 | + def get_template_names(self): |
| 282 | + """Get template names.""" |
| 283 | + template_name = self.template_name |
| 284 | + if not template_name: |
| 285 | + if not self.theme: |
| 286 | + theme = get_theme(request=self.request, as_instance=True) |
| 287 | + else: |
| 288 | + theme = self.theme |
| 289 | + template_name = theme.dashboard_template |
| 290 | + return [template_name] |
| 291 | + |
222 | 292 |
|
223 | 293 | # ***************************************************************************** |
224 | 294 | # ***************************************************************************** |
|
0 commit comments