Skip to content

Commit 9749436

Browse files
committed
Add middlewares search.
1 parent 9d1bc9c commit 9749436

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

README.markdown

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ For example, open `/docker:root@container:/code/manage.py` instead of
151151
| <kbd>C-c ' t</kbd> | djangonaut-find-template |
152152
| <kbd>C-c ' u</kbd> | djangonaut-find-url-module |
153153
| <kbd>C-c ' v</kbd> | djangonaut-find-view |
154+
| <kbd>C-c ' w</kbd> | djangonaut-find-middleware |
154155

155156
All navigation commands can open definitions in the other window. For
156157
example use <kbd>C-c ' 4 m</kbd> to open model definition in the other

djangonaut.el

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,21 @@ collect_views(get_resolver(get_urlconf()))
367367
print(dumps(views), end='', file=stdout)
368368
" "Python source code to get views.")
369369

370+
(defvar djangonaut-get-middlewares-code "
371+
from inspect import findsource, getsourcefile
372+
from json import dumps
373+
374+
from django.utils.module_loading import import_string
375+
376+
middlewares = {}
377+
378+
for name in getattr(settings, 'MIDDLEWARE', None) or settings.MIDDLEWARE_CLASSES:
379+
middleware = import_string(name)
380+
middlewares[name] = [getsourcefile(middleware), findsource(middleware)[1]]
381+
382+
print(dumps(middlewares), end='', file=stdout)
383+
" "Python source code to get middlewares.")
384+
370385
(defvar djangonaut-get-url-modules-code "
371386
from json import dumps
372387
from types import ModuleType
@@ -599,6 +614,8 @@ except:
599614

600615
(defvar djangonaut-views-history nil)
601616

617+
(defvar djangonaut-middlewares-history nil)
618+
602619
(defvar djangonaut-url-modules-history nil)
603620

604621
(defvar djangonaut-templates-history nil)
@@ -754,6 +771,10 @@ user input. HIST is a variable to store history of choices."
754771
"Execute and parse python code to get views."
755772
(djangonaut-read (djangonaut-call djangonaut-get-views-code)))
756773

774+
(defun djangonaut-get-middlewares ()
775+
"Execute and parse python code to get middlewares."
776+
(djangonaut-read (djangonaut-call djangonaut-get-middlewares-code)))
777+
757778
(defun djangonaut-get-url-modules ()
758779
"Execute and parse python code to get url modules."
759780
(djangonaut-read (djangonaut-call djangonaut-get-url-modules-code)))
@@ -934,6 +955,16 @@ user input. HIST is a variable to store history of choices."
934955
(interactive)
935956
(djangonaut-find-file-and-line #'find-file-other-window "View: " (djangonaut-get-views) 'djangonaut-views-history))
936957

958+
(defun djangonaut-find-middleware ()
959+
"Open definition of the Django middleware."
960+
(interactive)
961+
(djangonaut-find-file-and-line #'find-file "Middleware: " (djangonaut-get-middlewares) 'djangonaut-middlewares-history))
962+
963+
(defun djangonaut-find-middleware-other-window ()
964+
"Open definition of the Django middleware in the other window."
965+
(interactive)
966+
(djangonaut-find-file-and-line #'find-file-other-window "Middleware: " (djangonaut-get-middlewares) 'djangonaut-middlewares-history))
967+
937968
(defun djangonaut-find-url-module ()
938969
"Open definition of the Django url module."
939970
(interactive)
@@ -1014,6 +1045,7 @@ user input. HIST is a variable to store history of choices."
10141045
(define-key map (kbd "s") 'djangonaut-find-drf-serializer)
10151046
(define-key map (kbd "p") 'djangonaut-find-drf-permission)
10161047
(define-key map (kbd "v") 'djangonaut-find-view)
1048+
(define-key map (kbd "w") 'djangonaut-find-middleware)
10171049
(define-key map (kbd "u") 'djangonaut-find-url-module)
10181050
(define-key map (kbd "t") 'djangonaut-find-template)
10191051
(define-key map (kbd "g") 'djangonaut-find-template-tag)
@@ -1031,6 +1063,7 @@ user input. HIST is a variable to store history of choices."
10311063
(define-key map (kbd "4 s") 'djangonaut-find-drf-serializer-other-window)
10321064
(define-key map (kbd "4 p") 'djangonaut-find-drf-permission-other-window)
10331065
(define-key map (kbd "4 v") 'djangonaut-find-view-other-window)
1066+
(define-key map (kbd "4 w") 'djangonaut-find-middleware-other-window)
10341067
(define-key map (kbd "4 u") 'djangonaut-find-url-module-other-window)
10351068
(define-key map (kbd "4 t") 'djangonaut-find-template-other-window)
10361069
(define-key map (kbd "4 g") 'djangonaut-find-template-tag-other-window)

test/djangonaut-test.el

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
(djangonaut-get-drf-serializers)
2323
(djangonaut-get-drf-permissions)
2424
(djangonaut-get-views)
25+
(djangonaut-get-middlewares)
2526
(djangonaut-get-url-modules)
2627
(djangonaut-get-templates)
2728
(djangonaut-get-template-tags)

0 commit comments

Comments
 (0)