|
23 | 23 | ''' |
24 | 24 |
|
25 | 25 | import json |
| 26 | +import logging |
26 | 27 |
|
27 | 28 | from django.db import models |
28 | 29 | from django.contrib import admin |
29 | 30 | from django.utils.text import slugify |
30 | 31 | from django.shortcuts import get_object_or_404 |
31 | 32 |
|
32 | | -from .dash_wrapper import get_local_stateless_by_name |
| 33 | +from .dash_wrapper import get_local_stateless_by_name, get_local_stateless_list |
| 34 | + |
| 35 | + |
| 36 | +logger = logging.getLogger(__name__) |
| 37 | + |
33 | 38 |
|
34 | 39 | def get_stateless_by_name(name): |
35 | 40 | 'Locate stateless app instance given its name' |
36 | 41 | return get_local_stateless_by_name(name) |
37 | 42 |
|
| 43 | + |
38 | 44 | class StatelessApp(models.Model): |
39 | 45 | ''' |
40 | 46 | A stateless Dash app. An instance of this model represents a dash app without any specific state |
@@ -78,11 +84,34 @@ def find_stateless_by_name(name): |
78 | 84 | dsa_app.save() |
79 | 85 | return dash_app |
80 | 86 |
|
| 87 | + |
| 88 | +def check_stateless_loaded(): |
| 89 | + for ua in get_local_stateless_list(): |
| 90 | + try: |
| 91 | + find_stateless_by_name(ua) |
| 92 | + except: |
| 93 | + logger.warning("django-plotly-dash: Unable to create stateless instance: "+str(ua)) |
| 94 | + |
| 95 | + |
81 | 96 | class StatelessAppAdmin(admin.ModelAdmin): |
82 | 97 | 'Admin for StatelessApp ORM model instances' |
83 | 98 | list_display = ['app_name', 'slug',] |
84 | 99 | list_filter = ['app_name', 'slug',] |
85 | 100 |
|
| 101 | + def check_registered(modeladmin, request, queryset): |
| 102 | + # Check all existing apps, keep if OK |
| 103 | + for sa in queryset.all(): |
| 104 | + try: |
| 105 | + q = sa.as_dash_app() |
| 106 | + except: |
| 107 | + logger.warnng("django-plotly-dash: Unable to load stateless app: "+str(sa)) |
| 108 | + |
| 109 | + |
| 110 | + check_registered.short_description = "Check stateless apps" |
| 111 | + |
| 112 | + actions = [check_registered,] |
| 113 | + |
| 114 | + |
86 | 115 | class DashApp(models.Model): |
87 | 116 | ''' |
88 | 117 | An instance of this model represents a dash application and its internal state |
|
0 commit comments