|
34 | 34 | "ENABLE_ALL_PLUGINS_BY_DEFAULT", default=True if base.DEBUG else False, cast=bool |
35 | 35 | ) |
36 | 36 |
|
37 | | -# Create feature flags config only for modules that exist |
| 37 | +# Feature flags config — always present with False default when module is absent |
38 | 38 | FEATURE_FLAGS_CONFIG = { |
39 | 39 | "AUDIT_LOGGING": ( |
40 | | - ( |
41 | | - base.AUDIT_LOGGING, |
42 | | - "Audit logging", |
43 | | - bool, |
44 | | - ) |
45 | | - if importlib.util.find_spec("karrio.server.audit") is not None |
46 | | - else None |
| 40 | + base.AUDIT_LOGGING if importlib.util.find_spec("karrio.server.audit") is not None else False, |
| 41 | + "Audit logging", |
| 42 | + bool, |
47 | 43 | ), |
48 | 44 | "ALLOW_SIGNUP": ( |
49 | 45 | base.ALLOW_SIGNUP, |
|
61 | 57 | bool, |
62 | 58 | ), |
63 | 59 | "ADMIN_DASHBOARD": ( |
64 | | - ( |
65 | | - base.ADMIN_DASHBOARD, |
66 | | - "Admin dashboard", |
67 | | - bool, |
68 | | - ) |
69 | | - if importlib.util.find_spec("karrio.server.admin") is not None |
70 | | - else None |
| 60 | + base.ADMIN_DASHBOARD if importlib.util.find_spec("karrio.server.admin") is not None else False, |
| 61 | + "Admin dashboard", |
| 62 | + bool, |
71 | 63 | ), |
72 | 64 | "MULTI_ORGANIZATIONS": ( |
73 | | - ( |
74 | | - base.MULTI_ORGANIZATIONS, |
75 | | - "Multi organizations", |
76 | | - bool, |
77 | | - ) |
78 | | - if importlib.util.find_spec("karrio.server.orgs") is not None |
79 | | - else None |
| 65 | + base.MULTI_ORGANIZATIONS if importlib.util.find_spec("karrio.server.orgs") is not None else False, |
| 66 | + "Multi organizations", |
| 67 | + bool, |
80 | 68 | ), |
81 | 69 | "ORDERS_MANAGEMENT": ( |
82 | | - ( |
83 | | - base.ORDERS_MANAGEMENT, |
84 | | - "Orders management", |
85 | | - bool, |
86 | | - ) |
87 | | - if importlib.util.find_spec("karrio.server.orders") is not None |
88 | | - else None |
| 70 | + base.ORDERS_MANAGEMENT if importlib.util.find_spec("karrio.server.orders") is not None else False, |
| 71 | + "Orders management", |
| 72 | + bool, |
89 | 73 | ), |
90 | 74 | "APPS_MANAGEMENT": ( |
91 | | - ( |
92 | | - base.APPS_MANAGEMENT, |
93 | | - "Apps management", |
94 | | - bool, |
95 | | - ) |
96 | | - if importlib.util.find_spec("karrio.server.apps") is not None |
97 | | - else None |
| 75 | + base.APPS_MANAGEMENT if importlib.util.find_spec("karrio.server.apps") is not None else False, |
| 76 | + "Apps management", |
| 77 | + bool, |
98 | 78 | ), |
99 | 79 | "DOCUMENTS_MANAGEMENT": ( |
100 | | - ( |
101 | | - base.DOCUMENTS_MANAGEMENT, |
102 | | - "Documents management", |
103 | | - bool, |
104 | | - ) |
105 | | - if importlib.util.find_spec("karrio.server.documents") is not None |
106 | | - else None |
| 80 | + base.DOCUMENTS_MANAGEMENT if importlib.util.find_spec("karrio.server.documents") is not None else False, |
| 81 | + "Documents management", |
| 82 | + bool, |
107 | 83 | ), |
108 | 84 | "DATA_IMPORT_EXPORT": ( |
109 | | - ( |
110 | | - base.DATA_IMPORT_EXPORT, |
111 | | - "Data import export", |
112 | | - bool, |
113 | | - ) |
114 | | - if importlib.util.find_spec("karrio.server.data") is not None |
115 | | - else None |
| 85 | + base.DATA_IMPORT_EXPORT if importlib.util.find_spec("karrio.server.data") is not None else False, |
| 86 | + "Data import export", |
| 87 | + bool, |
116 | 88 | ), |
117 | 89 | "WORKFLOW_MANAGEMENT": ( |
118 | | - ( |
119 | | - base.WORKFLOW_MANAGEMENT, |
120 | | - "Workflow management", |
121 | | - bool, |
122 | | - ) |
123 | | - if importlib.util.find_spec("karrio.server.automation") is not None |
124 | | - else None |
| 90 | + base.WORKFLOW_MANAGEMENT if importlib.util.find_spec("karrio.server.automation") is not None else False, |
| 91 | + "Workflow management", |
| 92 | + bool, |
125 | 93 | ), |
126 | 94 | "SHIPPING_RULES": ( |
127 | | - ( |
128 | | - base.SHIPPING_RULES, |
129 | | - "Shipping rules", |
130 | | - bool, |
131 | | - ) |
132 | | - if importlib.util.find_spec("karrio.server.automation") is not None |
133 | | - else None |
| 95 | + base.SHIPPING_RULES if importlib.util.find_spec("karrio.server.automation") is not None else False, |
| 96 | + "Shipping rules", |
| 97 | + bool, |
134 | 98 | ), |
135 | 99 | "SHIPPING_METHODS": ( |
136 | | - ( |
137 | | - base.SHIPPING_METHODS, |
138 | | - "Shipping methods", |
139 | | - bool, |
140 | | - ) |
141 | | - if importlib.util.find_spec("karrio.server.shipping") is not None |
142 | | - else None |
| 100 | + base.SHIPPING_METHODS if importlib.util.find_spec("karrio.server.shipping") is not None else False, |
| 101 | + "Shipping methods", |
| 102 | + bool, |
143 | 103 | ), |
144 | 104 | "ADVANCED_ANALYTICS": ( |
145 | | - ( |
146 | | - base.ADVANCED_ANALYTICS, |
147 | | - "Advanced analytics", |
148 | | - bool, |
149 | | - ) |
150 | | - if importlib.util.find_spec("karrio.server.analytics") is not None |
151 | | - else None |
| 105 | + base.ADVANCED_ANALYTICS if importlib.util.find_spec("karrio.server.analytics") is not None else False, |
| 106 | + "Advanced analytics", |
| 107 | + bool, |
152 | 108 | ), |
153 | 109 | "PERSIST_SDK_TRACING": ( |
154 | 110 | base.PERSIST_SDK_TRACING, |
|
158 | 114 | } |
159 | 115 |
|
160 | 116 | # Update fieldsets to only include existing feature flags |
161 | | -FEATURE_FLAGS_FIELDSET = [k for k, v in FEATURE_FLAGS_CONFIG.items() if v is not None] |
| 117 | +FEATURE_FLAGS_FIELDSET = list(FEATURE_FLAGS_CONFIG.keys()) |
162 | 118 |
|
163 | 119 | # Plugin registry |
164 | 120 | ref.collect_failed_plugins_data() |
|
191 | 147 | } |
192 | 148 |
|
193 | 149 |
|
194 | | -# Filter out None values and update CONSTANCE_CONFIG |
| 150 | +# Aggregate all config sections into CONSTANCE_CONFIG |
195 | 151 | CONSTANCE_CONFIG = { |
196 | 152 | "EMAIL_USE_TLS": ( |
197 | 153 | EMAIL_USE_TLS, |
|
241 | 197 | "API request and SDK tracing logs retention period (in days)", |
242 | 198 | int, |
243 | 199 | ), |
244 | | - **{k: v for k, v in FEATURE_FLAGS_CONFIG.items() if v is not None}, |
| 200 | + **FEATURE_FLAGS_CONFIG, |
245 | 201 | **PLUGIN_REGISTRY, |
246 | 202 | **PLUGIN_SYSTEM_CONFIG, |
247 | 203 | } |
|
0 commit comments