Просмотр исходного кода

Debuging lodel_admin dyncode action

Now following commands seems to work (on default multisite template) :
python3 lodel_admin.py dyncode
python3 lodel_admin.py dyncode -m sites_em.pickle -o sites_leapi_dyncode.py
Yann Weber 7 лет назад
Родитель
Сommit
f620b4e31b
2 измененных файлов: 23 добавлений и 3 удалений
  1. 10
    2
      lodel/bootstrap.py
  2. 13
    1
      progs/slim/install_model/lodel_admin.py

+ 10
- 2
lodel/bootstrap.py Просмотреть файл

@@ -206,6 +206,8 @@ def site_load(data_path):
206 206
     LodelContext.set(None)
207 207
 
208 208
 ##@brief Fetch handled sites name
209
+#@note Have to be called in __loader__ context. After function call the
210
+#loaded context will remain __loader__
209 211
 #@warning assert that a full __loader__ context is ready and that the
210 212
 #multisite context is preloaded too
211 213
 #@warning hardcoded Lodelsite leo name and shortname fieldname
@@ -213,16 +215,22 @@ def site_load(data_path):
213 215
 #@todo attempt to delete hardcoded fieldname
214 216
 def get_handled_sites_name():
215 217
     LodelContext.expose_modules(globals(), {
216
-        'lodel.settings': ['Settings']})
218
+        'lodel.settings': ['Settings'],
219
+        'lodel.exceptions': ['LodelException']})
217 220
     lodelsites_name = Settings.sitename
218 221
     LodelContext.set(lodelsites_name)
219
-    lodelsite_leo = leapi_dyncode.Lodelsite #hardcoded leo name
222
+    try:
223
+        lodelsite_leo = leapi_dyncode.Lodelsite #hardcoded leo name
224
+    except NameError:
225
+        raise LodelException("dyncode not yet imported ! Probably not \
226
+generated yet")
220 227
     LodelContext.expose_modules(globals(), {
221 228
         'lodel.leapi.query': ['LeGetQuery'],
222 229
     })
223 230
     handled_sites = LeGetQuery(lodelsite_leo, query_filters = [],
224 231
         field_list = ['shortname']).execute()
225 232
     if handled_sites is None:
233
+        LodelContext.set(None)
226 234
         return []
227 235
     res = [ s['shortname'] for s in handled_sites]
228 236
     del(globals()['LeGetQuery'])

+ 13
- 1
progs/slim/install_model/lodel_admin.py Просмотреть файл

@@ -156,10 +156,22 @@ if __name__ == '__main__':
156 156
             os.path.join(lodel.buildconf.LODEL2VARDIR, lodelsites_name),
157 157
             lodel.buildconf.MULTISITE_DATADIR)
158 158
         del(globals()['Settings'])
159
+        #preloading lodelsites instance
159 160
         site_preload(lodelsites_datapath, 'lodelsites.conf.d', True)
160 161
 
162
+        LodelContext.expose_modules(globals(), {
163
+            'lodel.logger': 'logger',
164
+            'lodel.exceptions': ['LodelException']})
161 165
         #preloading all handled sites
162
-        for sitename in get_handled_sites_name():
166
+        try:
167
+            handled_sites = get_handled_sites_name()
168
+        except LodelException:
169
+            handled_sites = []
170
+            logger.warning("Unable to fetch handled site names without a \
171
+leapi_dyncode. Abording handled sites preloading")
172
+        del(globals()['logger'])
173
+        del(globals()['LodelException'])
174
+        for sitename in handled_sites:
163 175
             datapath = os.path.join(
164 176
                 os.path.join(lodel.buildconf.LODEL2VARDIR, sitename),
165 177
                 lodel.buildconf.MULTISITE_DATADIR)

Загрузка…
Отмена
Сохранить