a ˆ#½eí ã@s˜ddlZddlmZddlmZddlmZddlmZm Z ddl m Z m Z ddl mZdd lmZdd lmZd d „Zdd d„Zddd„Zdd„ZdS)éN)ÚTaskNestedView)Ú CheckTask)Ú GetTaskResult)Ú HttpResponseÚHttp404é)Úget_plugin_by_nameÚget_active_plugins)Úurl)Úserve)ÚurlparsecCs(t| ¡ƒ}| |j¡}|r |SdSdS)N)NNN)r Ú get_full_pathÚresolveÚpath)Úrequestr ÚoÚres©rú/webodm/app/plugins/views.pyÚtry_resolve_urls   rc Csât|ƒ}|durtdƒ‚| ¡D]V}t|td ||j¡|jg|j¢Ri|j¤Žƒ\}}}|r ||g|¢Ri|¤ŽSq t j   |  d¡¡rÖ|  |¡rÖt|td |¡td|  d¡iƒƒ\}}}|rÖ||g|¢Ri|¤ŽStdƒ‚dS)NúPlugin not foundz^/plugins/{}/{}Úpublicz^/plugins/{}/(.*)Ú document_rootúNo valid routes)rrÚapp_mount_pointsrr ÚformatÚviewÚargsÚkwargsÚosrÚexistsÚget_pathÚserve_public_assetsr ©rÚ plugin_nameÚpluginÚ mount_pointrrrrrrÚapp_view_handlers* ÿþý þ r'cCs„t|ƒ}|durtdƒ‚| ¡D]V}t|td ||j¡|jg|j¢Ri|j¤Žƒ\}}}|r ||g|¢Ri|¤ŽSq tdƒ‚dS)Nrz^/api/plugins/{}/{}r) rrÚapi_mount_pointsrr rrrrr#rrrÚapi_view_handler/s ÿþýr)cCsHg}tƒD]8}| ¡D]*}| t|j|jg|j¢Ri|j¤Ž¡qq |S)N)r Úroot_mount_pointsÚappendr rrr)ÚresultÚpr&rrrÚroot_url_patterns?s   *r.)N)N)rZ app.api.tasksrÚTaskViewZapp.api.workersrrÚ django.httprrÚ functionsrr Údjango.conf.urlsr Údjango.views.staticr Ú urllib.parser rr'r)r.rrrrÚs